undefined reference - szablon metody
Ostatnio zmodyfikowano 2011-03-02 20:23
pekfos Temat założony przez niniejszego użytkownika |
undefined reference - szablon metody » 2011-03-02 19:17:26 class plugin_wrapper { template < typename T > T proc( const char * );
template < typename T > T plugin_wrapper::proc( const char * name ) { typedef T( * tmp )(); tmp t =( tmp ) GetProcAddress( dll, name ); return t(); } impl.proc < int >( "jejej" ); obj\Release\main.o:main.cpp|| undefined reference to `int plugin_wrapper::proc<int>(char const*)'| kombinuję i kombinuję ale nic wykombinować nie mogę. dlaczego to nie działa? |
|
michalp |
» 2011-03-02 19:53:47 A jak kompilator ma skonkretyzować szablon metody skoro main.cpp nie ma dostępu do jej ciała? |
|
pekfos Temat założony przez niniejszego użytkownika |
» 2011-03-02 19:57:34 po wstawieniu ciała przed main skompilowało sie. co zrobić by kompilowało się mimo że ciało jest w innej jednostce translacji? ustawić jako inline? |
|
michalp |
» 2011-03-02 20:12:25 Kompilator musi taki szablon skonkretyzować w danym miejscu (tam gdzie ma dostęp do definicji funkcji/klasy).
Np.
template class std::vector < int >;
Metody w ten sposób nie przeciążysz (chyba że o czymś nie wiem...), ale klasę tak. |
|
pekfos Temat założony przez niniejszego użytkownika |
» 2011-03-02 20:23:14 dobra, problem rozwiązany. wystarczyło umieścić ciało w nagłówku. zamykam |
|
« 1 » |