我有一个名为 SomeClass 的类,带有一个模板
某类.hpp
template<typename T>
SomeClass
{
public:
SomeClass(T& it, int a): t(it), b(a) {
CallMethod();
}
static void PrintSomething() {
std::cout << "static method in SomeClass" <<std::endl;
}
private:
T& t;
int b;
void CallMethod();
}
方法在 someclass.cpp 中定义
void SomeClass<T>::Callmethod() {
t.SomeMethod();
}
现在,在 main.cpp 中,我有,
T t;
t.SomeMethod(); //no error
SomeClass<T>::PrintSomething(); //call only this static method, it works
SomeClass<T> SomeClass(t, 2); //error
错误是对构造函数内部调用的所有方法的未定义引用。以及对析构函数的未定义引用。这仅当我实例化一个对象时。没问题我从类中调用静态方法。我已经在 Make 中包含了目标文件。
我的生成文件。
OBJECTS = \
src/main.o \
Src/someclass.o \
sys: $(OBJECTS)
$(CXX) $(CXXFLAGS) -o sys $(OBJECTS) $(LIB)
有什么明显的错误吗?帮助表示赞赏。