Nicht aufgelöstes externes symbol (templatefunktion)



  • Hio, hab n problem und find es grad einfach nicht 😕

    es geht um folgende templatefunktion:
    die cpp:

    template<class T>
    T* ReadBinaryFile(std::string FilePath){
    	T* TmpObject = NULL;
    
    	std::ifstream read(FilePath, std::ios::binary);
    	if(read){
    		TmpObject = new T();
    		read.read((char*) TmpObject, sizeof(T));
    		read.close();
    	}
    	else{
    		std::cout << "Error Loading File: " << FilePath << std::endl;
    	}
    
    	return TmpObject;
    }
    

    hpp:

    template<class T>
    T* ReadBinaryFile(std::string FilePath);
    

    aufruf(mMainSettings ist ein Pointer auf Settings, die .bin datei existiert nicht, aber das soltle doch eig die if abfrage in der einlesefunktion abfangen?):

    if(ReadBinaryFile<Settings>("Save/Settings/Settings.bin") != NULL) mMainSettings->operator=(ReadBinaryFile<Settings>("Save/Settings/Settings.bin"));
    

    fehler:
    Verweis auf nicht aufgelöstes externes Symbol ""class Settings * __cdecl ReadBinaryFile<class Settings>(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??ReadBinaryFile@VSettings@@@@YAPAVSettings@@V?ReadBinaryFile@VSettings@@@@YAPAVSettings@@V?basic_string@DU?char_traits@D@std@@V?char\_traits@D@std@@V?allocator@D@2@@std@@@Z)" in Funktion ""private: void __thiscall Framework::LoadSettings(void)" (?LoadSettings@Framework@@AAEXXZ)".

    Seh da grad vrmtl. den wald vor lauter bäumen nicht 😕



  • Du musst Templates im Header definieren.



  • Siehe Haeufig gestellte Fragen unter Punkt 5.



  • ok, danke, wusste ich nichmehr 😕

    ewig keine templates mehr genutzt.


Anmelden zum Antworten