我将两个类分成四个文件。主类包括一个子类,需要执行它的功能(最小示例代码中未显示)。我想做的是在子类范围内执行主类的功能。
我认为有些想法是继承子类中的函数,但我不知道如何做到这一点。
MainClass.cpp
#include "MainClass.hpp"
void MainClass::mainCallback() {
std::cout << "[mainCallback] executed" << std::endl;
}
void MainClass::subCallback() {
std::cout << "[subCallback] executed" << std::endl;
}
int main() {
MainClass mainClass;
mainClass.mainCallback();
SubClass subClass;
subClass.activateSubClass();
return 0;
}
MainClass.hpp
#pragma once
#include "SubClass.hpp"
#include <iostream>
class MainClass{
public:
void mainCallback();
void subCallback();
};
子类
#include "SubClass.hpp"
void SubClass::activateSubClass(){
mainClass.subCallback(); //TODO call this function from this scope
}
子类
#pragma once
class SubClass{
public:
void activateSubClass();
};
SubClass.cpp中的错误当然是:
错误:使用未声明的标识符“mainClass”
最佳答案
只是子类的子类:
class SubClass: public MainClass {
public:
void activateSubClass();
};
SubClass的这种(公共(public))方式使MainClass的所有方法在SubClass实例中均可调用。您也可以私有(private)继承。这样,只有activateSubClass()才能被调用。
在activateSubClass中,您可以直接调用父类的方法:
void SubClass::activateSubClass(){
mainClass.subCallback(); //TODO call this function from this scope
}
不要忘记在SubClass.hpp中包含MainClass.hpp