'PolishStack'不是类模板,虚函数重影错误
'PolishStack' is not a class template, virtual function ghost error
我在实现基于抽象父类的类时遇到了一些问题。据说PolishStack是一个抽象类,尽管所有的虚拟函数都是编码的:
In file included from braincalc.cpp:10:
./polstack.h:15:7: error: explicit specialization of non-template class 'PolishStack'
class PolishStack<T> : public AbstractStack<T> {
^ ~~~
braincalc.cpp:13:21: error: variable type 'PolishStack<char>' is an abstract class
PolishStack <char> stk;
^
./abstractstack.h:53:16: note: unimplemented pure virtual method 'isEmpty' in
'PolishStack'
virtual bool isEmpty() const = 0;
这是我的课堂标题:
#ifndef POLSTACK_H
#define POLSTACK_H
#include <iostream>
using namespace std;
#include "abstractstack.h"
template <typename T>
class PolishStack<T> : public AbstractStack<T> {
T* data;
int mMax;
int mTop;
public:
PolishStack();
bool isEmpty();
const T& top() const throw (Oops);
void push(const T& x);
void pop();
void clear();
//my funcs:
void printStack();
~PolishStack();
};
#endif
我不想因为其他学生作弊而泄露我所有的代码,所以我会发布错误抱怨的函数:
#include "polstack.h"
//...
template <typename T>
bool PolishStack<T>::isEmpty() {
if(mTop == 0)
return true;
return false;
}
//...
正如其他人所说,它应该是:
template<typename T>
class PolishStack : public AbstractStack<T>
/abstractstack.h:53:16:注意:中未实现的纯虚拟方法"isEmpty"PolishStack"
虚拟布尔isEmpty()const=0;
你错过了const
:
template<typename T>
bool PolishStack<T>::isEmpty() const
// ^^^^^
{
if(mTop == 0)
return true;
return false;
}
注意:当您尝试使用不同的签名覆盖函数时(即,您引入了一个新的函数重载,而不是覆盖virtual
),应该使用override
关键字来通知您。
template<typename T>
class PolishStack : public AbstractStack<T>
{
public:
...
bool isEmpty() const override;
...
};
没有所有的代码很难判断,但我注意到的一件事是:
class PolishStack<T> : public AbstractStack<T> {
应该只是:
class PolishStack : public AbstractStack<T> {
这肯定会修复第一个错误,也可能(但可能不会)修复第二个错误。
尝试更改为
template <typename T>
class PolishStack : public AbstractStack<T>
附带说明:不赞成使用异常说明符throw (Oops)
。
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- C++ OpenCV 卡尔曼滤波器构造函数错误
- C++:用户定义的显式类型转换函数错误
- C++ 合并字符串以'system'函数错误
- C++ wmain 函数错误时使用 Unicode
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++ 中常量属性的初始化构造函数错误
- 线程 std::调用未知类型,无法专门化函数错误
- 表单显示对话框函数错误,并且不执行下面的语句
- 函数错误 C2059:语法错误:'>'不起作用
- STL向量上出现奇怪的复制构造函数错误
- C++ Visual Studio 重载函数错误:没有重载函数的实例与指定的类型匹配
- C++引用已删除函数错误
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- C++ 乘法定义的构造函数错误消息似乎错误
- 在 c++ 代码中将数组传递给函数错误
- FFMPEG avcodec_decode_video2函数错误代码
- 为什么我会收到转换函数错误