Szablony metod
Ostatnio zmodyfikowano 2014-06-16 18:44
Nowicjusz Temat założony przez niniejszego użytkownika |
Szablony metod » 2014-06-14 22:48:02 Cześć, co zrobić abym mógł oszablonować tylko metodę klasy a nie klasę, konkretnie chodzi mi o to aby metoda przyjmowała albo vektor<int> albo vektor<char>(nie potrzeba wyjatkow). #Klasa_cpp
class Klasa { public: void funkcja( vector < T > v ); };
#Klasa_H
void Klasa::funkcja( vektor < T > v ) { /.... }
Jak powyzsza metode poprawnie oszablonowac ? EDIT: Podobno trzeba zrobic to w ten sposob: #Klasa_cpp
template < class T > class Klasa { public: void funkcja( vector < T > v ); };
#inclued "Klasa.cpp"
#Klasa_H
template < class T > void Klasa < T >::funkcja( vektor < T > v ) { /.... }
Niestety wyskakuje mi blad, ktory podobno mozna rozwiazac dodajac #include "Klass.cpp" w miejsce w/w, ale to z koleji powoduje inny blad: Error 1 error C2995: 'void Klasa<T>::funkcja(void)' : function template has already been defined c:\users\marian\documents\visual studio 2013\projects\test\test\klasa.cpp 8 1 test
|
|
Monika90 |
» 2014-06-15 07:53:31 W pliku nagłówkowym class Klasa { public: template < class T > void funkcja( const std::vector < T >& v ) { } };
albo (też pliku nagłówkowym) class Klasa { public: template < class T > void funkcja( const std::vector < T >& v ); };
template < class T > void Klasa::funkcja( const std::vector < T >& v ) { }
|
|
Nowicjusz Temat założony przez niniejszego użytkownika |
» 2014-06-15 12:08:39 A w osobnych plikach nie da rady? Deklaracja w .cpp, definicja w .h ? |
|
Monika90 |
» 2014-06-15 12:20:41 W tym konkretnym przypadku, gdy ograniczasz się do int i char to się da, nagłówek: class Klasa { public: template < class T > void funkcja( const std::vector < T >& v ); };
plik cpp: template < class T > void Klasa::funkcja( const std::vector < T >& v ) { }
template void Klasa::funkcja( const std::vector < char >& ); template void Klasa::funkcja( const std::vector < int >& );
|
|
DejaVu |
» 2014-06-15 21:16:28 Szablony są niekompilowalne, więc deklaracja i definicja musi być w pliku nagłówkowym (co nie oznacza, że w tym samym pliku). |
|
Nowicjusz Temat założony przez niniejszego użytkownika |
» 2014-06-16 18:44:08 Dzieki |
|
« 1 » |