Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Frage zur Initialisierung von Methoden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
31.08.2008, 18:54 Uhr
Horaz




C++:
template<class T>
class Test
{
    public:
        Test();
};

Test::Test()
{
};


Was ist daran falsch mein Compiler meldet mir den Fehler:

E:\C++\IM_Srv\Element.h:28: error: `template<class T> class Element' used without template parameters
E:\C++\IM_Srv\Element.h:29: error: ISO C++ forbids declaration of `Element' with no type

Dieser Post wurde am 31.08.2008 um 18:54 Uhr von Horaz editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.08.2008, 19:05 Uhr
Kest
saint


Hi!

C++:
template<class T>
Test<T>::Test()
{
};

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.08.2008, 19:16 Uhr
xXx
Devil


Das Semikolon is auch falsch

C++:
template<typename value_type>
struct foo
{};
wäre es doch perfekt Den rest macht der Compiler in dem Fall lieber selber


C++:
template<typename value_type>
class handle
{
    typedef value_type value_t;
    value_t m_data;

public:
    handle(value_t const& data)
        : m_data(data)
    {}

public:
    value_t const& get() const { return m_data; }
    void set(value_t const& data) { m_data = data; }
};
sollte doch reichen

Dieser Post wurde am 31.08.2008 um 19:18 Uhr von xXx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.08.2008, 20:31 Uhr
Horaz



Thx jetzt klappts, aber muss ich jetzt für jede Methode die ich überschreiben will einen template basteln?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.08.2008, 20:46 Uhr
xXx
Devil


? wie du meinen? beispiel bitte
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.08.2008, 20:53 Uhr
Horaz



Ich meine jetzt Kests Lösung. Deine Lösung xXx hab ich nichts ganz verstanden. Ich habe sie zwar ausprobiert doch der Compiler hat mir einen Fehler gemeldet.

Kests Lösung sieht so aus:


C++:
template<classT>
class Test
{
    public:
        Test();
};

template<class T> //Muss ich für jede Methode erstellen (Gibt es keinen besseren Weg, wo ich des nicht erstellen muss?)
Test<T>::Test()
{
    ...
};


Doch dann müsste ich ja jede Methode in der Klasse Test so initialisieren. Gibt es da nicht einen anderen Weg?

Dieser Post wurde am 31.08.2008 um 20:55 Uhr von Horaz editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
31.08.2008, 23:27 Uhr
xXx
Devil


Ehm den, den ich geschrieben hab. Implementierung zu Dekleration schreiben Also das ganze nicht trennen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
31.08.2008, 23:40 Uhr
Kest
saint


Du kannst die Elementfunktion (in dem Fall das Konstruktor) innerhalb der Klasse definieren:

C++:
template<classT>
class Test
{
    public:
        Test(){}
};

Wenn du aber die Definition außerhalb der Klasse vornimmst, dann müssteste sie auch explizit als Template deklarieren, weil Elemente von Tamplate-Klassen selbst Templates sind. Also: anders geht nicht.

@xXx:
Das mit dem Semikolon, ist doch nicht falsch, oder? Ich mein, das Semikolon trennt einzelne Ausdrücke. In dem Fall ist es zwar überflüssig, aber nicht falsch.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 31.08.2008 um 23:42 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
01.09.2008, 00:03 Uhr
0xdeadbeef
Gott
(Operator)


Das Semikolon ist an der Stelle in der Grammatik nicht vorgesehen (Annex A.3, A.6, A.7 im Standard), also strikt falsch. Die meisten Compiler warnen allerdings nur.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
01.09.2008, 00:11 Uhr
Horaz



Also thx an alle.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: