模板和派生类定义:错误:“ myClass”不是类,名称空间或枚举

Vmonteco

我正在尝试学习C ++中的模板,并且我有以下代码:

#include <stack>

template<typename T>
class   myClass : public std::stack<T>{
public:
    myClass(void);
    myClass(myClass const & src);
    virtual ~myClass(void);
    myClass &   operator=(myClass const & rhs);
};

template<typename T>
myClass::myClass(void) : std::stack<T>(){
}

但是当我尝试编译时,我不知道为什么会得到以下内容:

test.cpp:17:1: error: 'myClass' is not a class, namespace, or enumeration
myClass::myClass(void) : std::stack<T>(){
^
test.cpp:8:9: note: 'myClass' declared here
class   myClass : public std::stack<T>{
        ^
1 error generated.

看起来像函数的定义会导致错误,但我不知道为什么会收到此错误,它对我来说看起来还可以(即使我猜不是很正常),也许只是语法错误?

我用clang ++ -Wall -Werror -Wextra -c进行编译

是什么导致此错误?

songyuanyao

您需要为其指定模板参数,因为它myClass是一个类模板。

template<typename T>
myClass<T>::myClass(void) : std::stack<T>() {
//     ^^^
}

生活


顺便说一句:: std::stack<T>()似乎是多余的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章