JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=8f7889b491c7c00ae1a701482a1ff4f9Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

[C++] inline Funktion geht nicht

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> FAQ
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 08.12.2004, 13:23    Titel: [C++] inline Funktion geht nicht Antworten mit Zitat

Wieso bekomme ich bei meiner inline/template-Funktion immer den Linker Fehler "unaufgelößter externer Verweis"?

Sehr wahrscheinlich hast Du im Header einen Prototypen definiert jedoch die Implementierung dieser Funktion in einer *.cpp Datei stehen, das ist so nicht "richtig". Eine Implementierung von inline, __inline bzw. __forceinline muss wie bei template-Funktionen und Klassen in der jeweiligen Headerdatei implementiert werden!

Bei Templates gibt es einen "speziellen Sonderfall":
Im Standard (Müsste C99 sein) gibt es die Möglichkeit Templates (Keine inline-Funktionen) in Dateien zu "spliten" wie man es normalerweise auch mit Funktionen oder Klassenfunktionen macht. Dies geht mit dem Schlüsselwort export das das seperate Übersetzungsmodell auch für Templates möglich macht. Derzeit gibt es aber so gut wie keinen Compiler (neben VC++7.1) der dies unterstützt bzw. richtig unterstützt.

Ein Template in 2 Dateien würde dann so aussehen:
Code:
 
    // foobar.h 
export template <class T> class foobar 

public: 
    unsigned int func (void); 
    // [...]
}; 
 
 
 
    // foobar.cpp 
#include "foobar.h" 
 
template <class T> unsigned int foobar::func (void) 
{
    // [...]
    return 0;
}


Solange nicht jeder Compiler diese Technik unterstützt, sollte man Template- sowie Inlineimplementierungen in eine Headerdatei schreiben, viele bezeichen eine Splittung von Templates und Inline sogar als "Unschön".
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> FAQ Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum