在C++中实现方法时继承不起作用
Inheritance not working when implementing method in C++
我有 2 个文件正在处理:encoder.h
和 encoder.cc
。
据我所知,继承的方法(初始化和读取)应该在MotorEncoder
类中可用。但是,当我尝试实现这些方法时,编译器会抛出错误。有什么想法吗?
页眉
class Encoder {
protected:
u32 bitResolution;
SPI spi;
public:
void initialize(u16 spiDeviceID, u32 bitResolution);
u32 read();
};
class MotorEncoder : public Encoder {
public:
// If I comment these 2 lines it SHOULD work as far as I know,
// but it won't compile due to the method not being defined when
// implementing e.g. in MotorEncoder::initialize()
void initialize(u16 spiDeviceID, u32 bitResolution);
u32 read();
};
实现
void Encoder::initialize(u16 spiDeviceID, u32 bitResolution) {
// ....
}
u32 Encoder::read() {
//
}
void MotorEncoder::initialize(u16 spiDeviceID, u32 bitResolution) {
// implementation
}
u32 MotorEncoder::read() {
// implementation code
}
基类和派生类中的方法当前不相关。他们只是碰巧有相同的名字。
完整的调用表达式将是 this->Encoder::read()
和 this->MotorEncoder::read()
。你可以省略this->
,不合格的read()
会引用MotorEncoder::read()
,但它们仍然是两个函数。
也就是说,我认为你对继承有一个更根本的误解。你不需要声明或定义MotorEncoder::read
,正是因为它已经被继承了。您可能还想阅读 virtual
.
initialize
是另一个令人担忧的迹象。在C++中,初始化由构造函数完成。
相关文章:
- 为什么在保护模式下继承升级不起作用
- 将复制构造函数设置为默认值在继承自 QObject 时不起作用
- 带有此指针的模板类多重继承构造函数不起作用?
- 我的二传手在新类中不起作用(继承)
- GCC:当层次结构中存在虚拟继承时,C++11 内联对象初始化(使用 "this")不起作用
- 为什么多个头文件和源文件中的C++继承不起作用?
- C++ 多级继承不起作用
- C++,继承的复制因子不起作用
- C++为什么继承不起作用
- 在C++中实现方法时继承不起作用
- .cpp.模板类继承不起作用
- 似乎头文件被忽略了/继承平原不起作用
- C++继承在堆栈上不起作用
- 使用继承时,带有 CRTP 的类型定义不起作用
- 类继承代码不起作用
- C++11构造函数继承不起作用
- c++中的继承不起作用.编译以下c++代码时发生链接器错误
- 使用模板时,继承不起作用
- 派生类的继承方法不起作用
- 具有继承的重载方法/运算符不起作用