c++ - 模板和派生类定义 : error: 'myClass' is not a class, 命名空间,或枚举

标签 c++ templates derived-class

我正在尝试学习 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是一个类模板。

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

LIVE


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

关于c++ - 模板和派生类定义 : error: 'myClass' is not a class, 命名空间,或枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34803311/

相关文章:

c++ - 如何避免为每个成员函数重复类模板规范?

javascript - 如何让 Blaze(Meteor 模板引擎的独立部分)使用动态下载的模板

parsing - 如何使用go模板通过FuncMap解析html文件

java - 速度不支持&acute吗?

python - 派生类构造函数如何在 python 中工作?

c# - 用 List<derivedClass> 覆盖 List<baseClass>

c++ - 使用ideone时如何传入命令行参数?

c++ - 如何在android项目中使用NDK?

c++ - 交叉编译qt : Error while loading shared libraries

c++ - 具有不同访问权限的类 : read-only to the many, 可写入特权