我将两个类分成四个文件。主类包括一个子类,需要执行它的功能(最小示例代码中未显示)。我想做的是在子类范围内执行主类的功能。

我认为有些想法是继承子类中的函数,但我不知道如何做到这一点。

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

07-24 09:46
查看更多