我在多态类和继承方面遇到了麻烦。
我有一个父类
//calibration.h
class Calibration {
private:
public:
void init();
void calc():
void close();
void saveFile();
}
//calibration.cpp
Calibration::Calibration(){}
void Calibration::saveFile(){
std::ofstream out;
out.open("cores.arff");
out << " " << std::endl;
out.close();
}
Run Code Online (Sandbox Code Playgroud)
我有两个孩子
//automatic.cpp
Automatic::Automatic(){}
void Automatic::config(){
....
}
void Automatic::calibrate(){
....
}
void Calibrate::init(){
Automatic::config();
}
//manual.h
#include "calibration.h"
class Manual : public Calibration {
public:
void calibrate();
}
//manual.cpp
Manual::Manual(){}
void Manual::calibrate(){
....
}
void Calibrate::init(){
Manual::calibrate();
}
Run Code Online (Sandbox Code Playgroud)
我如何更正呼叫Manual::calibrate
和Automatic::config
来自Calibrate::init()
?
我试过了:
void Calibrate::init(){
Automatic::config();
}
Run Code Online (Sandbox Code Playgroud)
但我得到的错误是:
错误:没有在类“自动”中声明成员函数
在面向对象的编程中,这个问题最好通过成员函数重载来解决。
让Calibrate::init()
虚拟
virtual void init();
Run Code Online (Sandbox Code Playgroud)
在每个子类中重载 init 方法,并在每个子类中调用子类特定的方法。
class Manual : public Calibration {
public:
void init();
void calibrate();
}
Manual::init()
{
this->calibrate();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26133 次 |
最近记录: |