Вы пытаетесь вызвать MainClass.subCallback()
без экземпляра MainClass
. По моему мнению, это типичный вариант использования static
методов.
Тогда, я думаю, вы делаете ваши #include
директивы неправильным образом. В самом деле, MainClass
, кажется, не нужно знать SubClass
, но верно обратное. Я думаю, что лучше включить MainClass.hpp в SubClass.hpp. Это решит вашу проблему с круговыми зависимостями.
И вы можете написать свою функцию main()
в другом файле.
РЕДАКТИРОВАТЬ: Пример
MainClass.hpp
#pragma once
class MainClass
{
public:
void mainCallback();
static void subCallback(); // mak it static to be able to call it without an instance of the class
};
MainClass.cpp
#include "MainClass.hpp"
#include <iostream>
void MainClass::mainCallback()
{
std::cout << "[mainCallback] executed" << std::endl;
}
void MainClass::subCallback()
{
std::cout << "[subCallback] executed" << std::endl;
}
SubClass.hpp
#pragma once
class SubClass
{
public:
void activateSubClass();
};
SubClass.cpp
#include "SubClass.hpp"
#include "MainClass.hpp" // MainClass inclusion
void Suclass::activateSubClass()
{
MainClass::subCallback(); // Call of the static method
}
main.cpp
#include "MainClass.hpp"
#include "SubClass.hpp"
int main()
{
MainClass mc;
mc.mainCallback();
SubClass sc;
sc.activateSubClass(); // Will call MainClass::subCallback()
return 0;
}
Надеюсь, это поможет вам.