Wykorzystywanie szablonów. LNK2019
Ostatnio zmodyfikowano 2017-01-09 22:18
slovvik Temat założony przez niniejszego użytkownika |
Wykorzystywanie szablonów. LNK2019 » 2017-01-09 22:15:36 Cześć, mam prosty szablon, w którym powinienem mieć możliwość dodawania elementów oraz łączenia utworzonych klass. Niby wszystko ładnie trochę poczytałem o szablonach, ale wywala mi błąd kompilacji. Nie bardzo rozumiem czemu. Przeczytałem na stacku, że to jest niby problem w braku definicji metod, ale ja takowe posiadam. Nie wiem jeszcze w czym może tkwić problem. Tak to u mnie wygląda: #pragma once #include <vector>
template < class T > class tmp { public: tmp < T >(); ~tmp < T >(); void add( T element ); void addCollection( tmp collection ); void showCollection(); private: std::vector < T > collection; };
#include "stdafx.h" #include "tmp.h" #include <iostream>
template < class T > tmp < T >::tmp() { }
template < class T > tmp < T >::~tmp() { }
template < class T > void tmp < T >::add( T element ) { collection.push_back( element ); }
template < class T > void tmp < T >::addCollection( tmp collection ) { this->collection.insert( this->collection.end(), collection.collection.begin(), collection.collection.end() ); }
template < class T > void tmp < T >::showCollection() { for( int i = 0; i < collection.size(); i++ ) { std::cout << collection[ i ]; } }
int main() { tmp < int > tmp; tmp.add( 4 ); tmp.showCollection(); return 0; }
A taki mam kod błędu: Severity Code Description Project File Line Suppression State Error LNK2019 unresolved external symbol "public: __thiscall tmp<int>::tmp<int>(void)" (??0?$tmp@H@@QAE@XZ) referenced in function _main Lista5 c:\Users\bartek-pc\documents\visual studio 2015\Projects\Lista5\Lista5\Lista5.obj 1
|
|
karambaHZP |
» 2017-01-09 22:18:37 template nie rozdziela się na plik *.h i *.cpp. Można to zrobić w inny sposób, ale nie poleca się go. Najlepiej jest definiować metody wewnątrz klasy, lub w tym samym pliku nagłówkowym. |
|
« 1 » |