Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

undefined reference - szablon metody

Ostatnio zmodyfikowano 2011-03-02 20:23
Autor Wiadomość
pekfos
Temat założony przez niniejszego użytkownika
undefined reference - szablon metody
» 2011-03-02 19:17:26
C/C++
class plugin_wrapper {
    //..
    template < typename T > T proc( const char * );
C/C++
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?
P-28762
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?
P-28765
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?
P-28766
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.
P-28767
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
P-28768
« 1 »
  Strona 1 z 1