templates inline wie?

orben

Mitglied
Hi,
ich muss eine Template Klasse programmieren und habe dabei einen undefined reference Fehler bekommen.
Schnell gegoogelt und herausgefunden, dass man sie inline programmieren soll, weil der Compiler(bei mir gcc) irgendwas zur gleichen Zeit benötigt.
Dann mal schnell herumprobiert und noch mal nach inline Beispielen gegoogelt, aber nichts anschauliches gefunden.
Danach hatte ich mehr Fehler als vorher.
Meine eigentliche Frage ist wie man eine (Template) Klasse inline programmiert. Am besten mit einem anschaulichem Beispiel.
 
Hallo,

bei Verwendung von Templates muss die komplette Definition der Klassen/Methoden in der jeweiligen Übersetzungseinheit zur Verfügung stehen. Im Gegensatz zu Nicht-Template-Klassen schreibt man deswegen die Definition meist einfach mit in die Headerdatei. Eine separate .cpp für die Implementierung entfällt somit. Siehe auch den entsprechenden Abschnitt in der (allgemein empfehlenswerten) C++ FAQ Lite.

Wenn dir das nicht weiter hilft, erklär dein Problem bitte etwas konkreter. Am besten mit Quelltext und Compilerausgabe.

Grüße,
Matthias
 
Meine Frage bezieht sich auf die Syntax. Ich möchte ansich nur wissen, wie das aussieht wenn ich Deklaration/Definition in eine Header schreibe und die cpp weglasse?
 
Ich bin irgendwie zu blöd. Hier mal Beispielcode:


Code:
//header

template <class T, unsigned int v> class CBla{

    public:

        CBla();
        ~CBla();
        T ausgabe();

    private:

        T m_inhalt;
       
};

Code:
//cpp

template <class T, unsigned int v>
CBla<T, v>::CBla() {
      m_inhalt=10;
}

template <class T, unsigned int v>
CBla<T, v>::~CBla() {
}

template <class T, unsigned int v>
T& CBla<T, v>::  ausgabe {

    return &m_inhalt
}
Wie würde ich das jetzt inline schreiben?
 
Template-Klassen müssen alle ihre Funktionen im Header definiert haben, da jede Instanz eines Templates komplett eigeständig kompiliert wird. Du kannst es nicht in Header und CPP aufteilen (noch nicht).
 
Das ist mir schon klar, darum geht es mir auch garnicht. Ich möchte einfach nur wissen wie mein Beispielcode inline aussehen würde. Wie wäre die korrekte konkrete syntax?
 
Vielleicht verstehst du da etwas falsch, was inline betrifft. Das ist nicht eine Eigenschaft des Codeschreibens. Ich verstehe allerdings irgendwie nicht was so schwer daran zu verstehen ist, dass du den Code nicht in der CPP schreibst sondern im Header.
 
Zurück