Beste tweakers,
Bij het leren van C++ ben ik vandaag in contact gekomen met templates (met als doel, een zo generiek mogelijke stringify functie).
Ik ben dus begonnen met een algemene stringify, gebaseerd op templates, om die dan later uit te breiden voor specifieke gevallen (vb bij booleans, "true" & "false" in plaats van 1 en 0). De basiscode die in mijn .cpp komt is dus als volgt:
Maar omdat deze code in een aparte file komt, moet ik ook een defenitie ervan in mijn header plaatsen. Daar ondervind ik echter problemen, wat ik ook probeer, de linker vind geen referenties naar het gebruik van stringify... De huidige code die ik in mijn header heb:
De stringify functie gebruik ik in server.cpp als volgt:
Ik wil dus de integer die ik ontvang uit de clientData struct omvormen naar een string om zo wat output te verkrijgen (vergeef me de mogelijke beginnersfouten, het is mijn kennismaking met C++ en networking
).
Hierover klaagt mijn linker echter als volgt:
Ik heb al talloze variaties daarop geprobeerd (want ik vermoed dat het probleem bij mijn header defenition ligt), maar niks bood soelaas. Ook las ik ergens dat je het "export" keyword zou moeten gebruiken, maar dat was enkel bij een class template. Ook klaagde mijn compiler dan dat het een unrecognized keyword was, en dus genegeerd zou worden.
Als iemand mij een duwtje in de goede richting zou kunnen geven
maleadt
Bij het leren van C++ ben ik vandaag in contact gekomen met templates (met als doel, een zo generiek mogelijke stringify functie).
Ik ben dus begonnen met een algemene stringify, gebaseerd op templates, om die dan later uit te breiden voor specifieke gevallen (vb bij booleans, "true" & "false" in plaats van 1 en 0). De basiscode die in mijn .cpp komt is dus als volgt:
C++:
1
2
3
4
5
6
| template<typename T> string stringify( const T& inputVariable ) { std::ostringstream tempStream; tempStream << inputVariable; return tempStream.str(); } |
Maar omdat deze code in een aparte file komt, moet ik ook een defenitie ervan in mijn header plaatsen. Daar ondervind ik echter problemen, wat ik ook probeer, de linker vind geen referenties naar het gebruik van stringify... De huidige code die ik in mijn header heb:
C++:
1
| template<typename T> string stringify(const T& inputVariable); |
De stringify functie gebruik ik in server.cpp als volgt:
C++:
1
2
3
| string clientAddress = inet_ntoa(clientData.sin_addr); int clientPort = ntohs(clientData.sin_port); outputInfo("Client " + clientAddress + " has connected on port " + stringify(clientPort)); |
Ik wil dus de integer die ik ontvang uit de clientData struct omvormen naar een string om zo wat output te verkrijgen (vergeef me de mogelijke beginnersfouten, het is mijn kennismaking met C++ en networking
Hierover klaagt mijn linker echter als volgt:
code:
1
| server.cpp:(.text+0x551)||undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> > stringify<int>(int const&)'| |
Ik heb al talloze variaties daarop geprobeerd (want ik vermoed dat het probleem bij mijn header defenition ligt), maar niks bood soelaas. Ook las ik ergens dat je het "export" keyword zou moeten gebruiken, maar dat was enkel bij een class template. Ook klaagde mijn compiler dan dat het een unrecognized keyword was, en dus genegeerd zou worden.
Als iemand mij een duwtje in de goede richting zou kunnen geven
maleadt