gpt4 book ai didi

c++ - "used without template parameters"

转载 作者:IT老高 更新时间:2023-10-28 12:59:33 33 4
gpt4 key购买 nike

我意识到以前有人问过类似的问题,但我阅读了其中的几个,但仍然看不出我哪里出错了。当我简单地编写我的类而不将原型(prototype)与定义分开时,一切正常。当我将原型(prototype)和定义分开时会出现问题,如下所示:

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();

我以前从未做过模板类,所以如果这里的问题是微不足道的,请原谅我。

最佳答案

VisitedSet是模板,不是类,所以不能使用VisitedSet在嵌套名称说明符中,例如 VisitedSet::getSize() .正如您指定 class VisitedSet<T> 的声明一样为所有 class T ,您必须指定 VisitedSet<T>::getSize() 的定义为所有 class T :

template<class T>
int VisitedSet<T>::getSize() {
// ^^^
return vec.size();
}

但是,模板的名称可以像模板定义中的类一样使用:

template<class T>
struct Example {
Example* parent;
T x, y;
};

在这种情况下,ExampleExample<T> 的缩写.

关于c++ - "used without template parameters",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10263017/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com