Для того чтобы классы использовали члены друг друга я использую передачу объекта по указателю, forward declaration и включение в один из файлов исходного кода заголовочный файл другого класса, пример я привёл ниже. Я не так давно в программировании, не могли бы вы мне подсказать, есть ли другие способы чтобы классы использовали члены друг друга? Потому-что данный способ мне кажется слегка запутанным. Спасибо.
main.cpp
#include <iostream>
#include "MainClass.h"
int main()
{
MainClass mainClass;
return 0;
}
MainClass.h
#ifndef MAINCLASS_H
#define MAINCLASS_H
#include <iostream>
#include "OtherClass.h"
class MainClass
{
friend class OtherClass;
public:
MainClass();
private:
int var1 = 100;
OtherClass *otherClass;
};
#endif // MAINCLASS_H
MainClass.cpp
#include "MainClass.h"
MainClass::MainClass()
{
std::cout << var1 << std::endl;
otherClass = new OtherClass(this);
}
OtherClass.h
#ifndef OTHERCLASS_H
#define OTHERCLASS_H
class MainClass;
class OtherClass
{
public:
OtherClass(MainClass *a);
private:
int var2 = 50;
MainClass *mainClass;
};
#endif // OTHERCLASS_H
OtherClass.cpp
#include "OtherClass.h"
#include "MainClass.h"
OtherClass::OtherClass(MainClass *mainClass)
{
this->mainClass = mainClass;
std::cout << this->mainClass->var1 - var2 << std::endl;
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Я работаю с двумя функциями из сторонних библиотекОдна возвращает const char*, а другая принимает const u_char*
Создать пустой список указателей на объекты класса Круг, используя коллекции языка С++ (например, std::vector<T>)
Есть функция внутри метода, находящая необходимую клетку на поле: