Привет всем, я просто хотел попрактиковаться в некотором шаблоне c ++, но я получаю ошибки компоновщика. Кто-нибудь может мне помочь, пожалуйста?
Вот мой код:
// File: MyClass.h
#ifndef _MYCLASS_H
#define _MYCLASS_H
template<class T> class MyClass {
T value;
public:
MyClass(T v);
~MyClass();
};
#endif // _MYCLASS_H
// File: MyClass.cpp
#include "MyClass.h"
template<class T> MyClass<T>::MyClass(T v) {
value = v;
}
template<class T> MyClass<T>::~MyClass() {
}
// File: main.cpp
#include "MyClass.h"
int main() {
MyClass<int> test(10);
return 0;
}
Вот вывод командной строки:
g++ main.cpp -c
g++ MyClass.cpp -c
g++ main.o MyClass.o -o Out
main.o: In function `main':
main.cpp:(.text+0x1a): undefined reference to `MyClass<int>::MyClass(int)'
main.cpp:(.text+0x2b): undefined reference to `MyClass<int>::~MyClass()'
collect2: ld returned 1 exit status
make: *** [all] Error 1
Как видите, я использую Ubuntu 10.04 и GNU C ++ Compiler.
Я что-то упустил в этом коде?
Спасибо за ответы. Это работает, но разве нет лучшего способа защитить код?
Например, что если я хочу создать библиотеку без открытых источников ?!
Я хочу экспортировать код в статическую библиотеку. и связать библиотеку с другими проектами ...