我正在尝试学习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 进行编译。
是什么导致了这个错误?
void
,只需使用myClass();
。 - user657267