在 C++ 继承中从父调用子方法的最佳方法

sch*_*rel 4 c++

我在多态类和继承方面遇到了麻烦。

我有一个父类

//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::calibrateAutomatic::config来自Calibrate::init()

我试过了:

void Calibrate::init(){
 Automatic::config();
}
Run Code Online (Sandbox Code Playgroud)

但我得到的错误是:

错误:没有在类“自动”中声明成员函数

UmN*_*obe 9

在面向对象的编程中,这个问题最好通过成员函数重载来解决。

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)