0

我有一个名为 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)

有什么明显的错误吗?帮助表示赞赏。

4

0 回答 0