РЕДАКТИРОВАТЬ: это было отмечено как дубликат.Я считаю, что есть различие между Q: что я могу использовать для решения своей проблемы, A: эта вещь ~ и ~ Q: что это за вещь?A: большой огромный ответ.Я не уверен, каково официальное решение по этому вопросу.
У меня есть два класса, которые оба должны знать друг о друге
// Creator.h
#pragma once
#include "Creation.h"
class Creator {
Creator() {
myThing = new Creation(*this);
}
int age = 42;
Creation myThing*;
}
.
// Creation.h
#pragma once
#include "Creator.h"
class Creation {
Creation(Creator &whoMadeMe) {
std::cout << whoMadeMe.age;
}
}
Проблема в том, что всякий раз, когда я делаю что-то подобное, я получаю сообщение об ошибке, что того или другого еще нет.В этом случае Creation(Creator &whoMadeMe)
выдаст ошибку Creator does not exist
из-за того, что класс Creation не готов к ссылке.
До этого момента я всегда находил способ, чтобы только один класс знал одругой, или, возможно, использовать некоторый родительский класс, чтобы избежать ссылки на класс, который ссылается обратно.Но я нахожусь в тупике, где мне нужно, чтобы оба этих класса знали друг друга и их свойства, и мне нужен один для создания другого.
Итак, в подобных сценариях, где одиндолжен передать указатель this
в конструктор, как это можно сделать, не создавая циклическую ссылку или не потеряв / не изменив типизацию?
Кроме того, если потеря / повторная запись типизации являетсялучшее решение, пожалуйста, дайте мне знать.Мне всегда говорили избегать этого, и я предполагаю, что это не решение проблемы.