Я немного новичок в C ++ и столкнулся с проблемой при настройке основной архитектуры.Я узнал, как использовать эту конкретную архитектуру в C #, но я не могу заставить ее работать в C ++.Моя проблема заключается в следующем: у меня есть 2 объекта.Я хочу, чтобы эти объекты «знали» друг о друге, поэтому я хочу, чтобы ссылки на оба этих объекта были внутри них переменными-членами.
Учтите это:
//main.cpp:
#include "Object1.h"
#include "Object2.h"
Object1 *obj1;
Object2 *obj2;
...
obj1 = new Object1(obj2);
obj2 = new Object2(obj1);
...
//Object1.h
#ifndef OBJECT1_H
#define OBJECT1_H
#include "Object2.h"
class Object1 {
public:
Object1(Object2*);
Object2 *obj;
}
#endif
//Object2.h
#ifndef OBJECT2_H
#define OBJECT2_H
#include "Object1.h"
class Object2 {
public:
Object2(Object1*);
Object1 *obj;
}
#endif
Это, однако, невозможно.Потому что без ifndef у вас была бы эта бесконечная итерация включения файлов .h.Но с помощью ifndef один из объектов не включает определение другого класса и не знает, какой объект он должен создать.Вся эта проблема не возникает в C #, потому что вам не нужно включать .h файлы.У вас даже нет файлов .h: P.Когда вы создаете новый класс, каждый другой класс знает о существовании этого класса.Но в C ++ вы должны включить .h определенного класса, прежде чем можно будет создать объект этого класса (или даже ссылку).
Итак, мой вопрос.Как мне сделать 2 объекта со ссылками друг на друга как переменные-члены?
Спасибо за ваш интерес!
Приветствия,
Максим Шумейкер