gpt4 book ai didi

c++ - 在 C++ 继承中从 Parent 调用 Child 方法的最佳方法

转载 作者:行者123 更新时间:2023-11-28 00:02:21 24 4
gpt4 key购买 nike

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

我有一个父类

//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();
}

我有两个 child

//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();
}

我如何从 Calibrate::init() 更正调用 Manual::calibrateAutomatic::config

我试过:

void Calibrate::init(){
Automatic::config();
}

但我得到的错误是:

error: no member function declared in class 'automatic'

最佳答案

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

使 Calibrate::init() 成为虚拟的

virtual void init();

在每个子类中重载 init 方法,并在每个子类中调用子特定方法。

class Manual : public Calibration {
public:
void init();
void calibrate();
}

Manual::init()
{
this->calibrate();
}

关于c++ - 在 C++ 继承中从 Parent 调用 Child 方法的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37868245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com