【发布时间】:2016-04-20 14:08:14
【问题描述】:
我正在尝试学习 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 确实如此,但出于编程风格的原因,我必须在学校使用它(我的学校问,我养成了这个习惯)。
标签: c++ templates derived-class