template and derived class definition : error: 'myClass' is not a class, namespace, or enumeration

template and derived class definition : error: 'myClass' is not a class, namespace, or enumeration

我正在尝试学习 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.

编译

什么可能导致此错误?

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

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

LIVE


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