【发布时间】:2026-01-03 12:25:01
【问题描述】:
我意识到以前有人问过类似的问题,但我阅读了其中的几个,但仍然看不出我哪里出错了。当我简单地编写我的类而不将原型与定义分开时,一切正常。当我将原型和定义分开时会出现问题,如下所示:
template<class T> class VisitedSet {
public:
VisitedSet();
int getSize();
void addSolution(const T& soln);
void evaluate();
private:
vector<T> vec;
int iteration;
};
作为一个给我这个错误的定义的例子:
int VisitedSet::getSize() {
return vec.size();
我以前从未做过模板类,所以如果这里的问题是微不足道的,请原谅我。
【问题讨论】:
-
注意:在大多数情况下,您希望在标头中访问模板成员函数的定义。如果定义在标题中,请记住将它们标记为
inline(或在模板类定义中定义它们),如果不是,请三思而后行并确保您不需要标题中的定义(您需要如果您在包含要使用模板的 all 类型的定义的翻译单元中显式实例化,则不需要标题中的定义)。我担心你很快就会被这个咬住......