Template
-
#include <iostream> using namespace std; template <typename T> class Auto { private : T wert; public : Auto(){}; Auto(T a):wert(a){} //template <typename T> void setwert(T a) { wert = a; } //template <typename T> T getwert() { return wert; } }; int main() { Auto<int> hono(); hono.setwert(222); cout << hono.getwert(); cout << endl; system("pause"); }Lerne grade Templates, wenn ich den Konstruktor Auto<int> hono(2121) aufrufe klappt es wenn ich aber Auto<int> hono() geht es nicht. Wieso ? da kommt der compiler fehler
30 request for member `setwert' in `hono', which is of non-class type `Auto<int> ()()'
-
Warum sind setwert und getwert Templates?
Edit: Oops.
-
Das hat nichts mit Templates zu tun, sondern passiert dir mit jedem anderen Typen auch. Du deklarierst in Zeile 29 eine Funktion, statt ein Objekt zu definieren. Lass einfach die Klammern weg.
-
setwert und getwert sind keine Templates ich habe es auskommentiert wenn du die
//template <typename T> überlesen hast => // Kommentar
-
@ michael E Nein ich initialisiere ein Statisches Objekt mit Auto<int> hono() in <> steht der Typ den das Template übernehmen soll.
2,)Fktsdefinitionen können nicht in main vorkommen
-
Gast212 schrieb:
@ michael E Nein ich initialisiere ein Statisches Objekt mit Auto<int> hono() in <> steht der Typ den das Template übernehmen soll.
Nein, du deklarierst eine Funktion. Lass die Klammern weg. http://ideone.com/5QOZT
Gast212 schrieb:
2,)Fktsdefinitionen können nicht in main vorkommen
Von Definitionen hat niemand was gesagt.
-
Aha ok danke cooky.
-
Wie kann ich den das Objekt honu dynamisch erzeugen ?
Auto<int> *d = new Auto; => schlägt fehl
-
Der Typ den du erzeugen willst heißt Auto<int>. Ganz normal:
Auto<int>* p = new Auto<int>;Fragt sich halt wozu aber na ja.