c – “没有模板参数”

我意识到类似的问题之前已经提过,但是我读了几个,仍然看不到我出错的地方.当我简单地写我的类没有分离原型与定义,一切正常.当我分离原型和定义时,会出现此问题,如下所示:

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 :: getSize())中使用VisitedSet.就像你指定了VisitedSet< T>类的声明一样.对于所有类T,您必须为所有类T指定VisitedSet< T> :: getSize()的定义:

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

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

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

在这种情况下,实施例是< T>的缩写.

http://stackoverflow.com/questions/10263017/used-without-template-parameters

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – “没有模板参数”