gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 22:26:43 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com