C++为什么继承不起作用
C++ why is inheritance not working?
In Shape.hpp:
class Shape {
public:
char c;
virtual void paint();
...
};
在三角形中:
#include "Shape.hpp"
class Triangle : public Shape {
...
};
在三角形.cpp:
...
void Triangle::paint() {
...
}
...
编译时:
error: class ‘Triangle’ does not have any field named ‘c’
error: no ‘void Triangle::paint()’ member function declared in class ‘Triangle’
我不明白为什么三角形没有其父类 Shape 的字段和成员函数。如何解决这个问题?
您还需要在 Triangle
中声明 paint()
成员函数:
class Triangle : public Shape
{
public:
void paint() override;
};
在派生类中也需要声明覆盖函数:
class Triangle : public Shape
{
public:
void paint();
};
(可选)在 C++11 中,您可以更明确地执行以下操作:
class Triangle : public Shape
{
public:
void paint() override;
};
然后编译器也知道这是一个覆盖,所以可以"检查"你没有改变/添加你认为是覆盖的新函数。
相关文章:
- 为什么在保护模式下继承升级不起作用
- 将复制构造函数设置为默认值在继承自 QObject 时不起作用
- 带有此指针的模板类多重继承构造函数不起作用?
- 我的二传手在新类中不起作用(继承)
- GCC:当层次结构中存在虚拟继承时,C++11 内联对象初始化(使用 "this")不起作用
- 为什么多个头文件和源文件中的C++继承不起作用?
- C++ 多级继承不起作用
- C++,继承的复制因子不起作用
- C++为什么继承不起作用
- 在C++中实现方法时继承不起作用
- .cpp.模板类继承不起作用
- 似乎头文件被忽略了/继承平原不起作用
- C++继承在堆栈上不起作用
- 使用继承时,带有 CRTP 的类型定义不起作用
- 类继承代码不起作用
- C++11构造函数继承不起作用
- c++中的继承不起作用.编译以下c++代码时发生链接器错误
- 使用模板时,继承不起作用
- 派生类的继承方法不起作用
- 具有继承的重载方法/运算符不起作用