C++ У меня есть класс window, parent, который создает несколько окон вкладок, child1, child2, ect .. В родительском окне есть переменные-члены для каждого дочернего окна. Я хочу получить доступ к child2 из child1 и подумал, что могу передать указатель на родительский элемент в конструкторе child1 и использовать указатель родителя для доступа к child2. Я даже не знаю, как начать. Я пробовал что-то вроде следующего и не компилируется, начиная с строки, содержащей (* this).Передача указателя на себя
class CParent
{
public:
CParent() {};
CChild1 m_Child1(*this);
CChild2 m_Child2;
....
};
class CChild1
{
public:
CChild1(CParent *pParent) {};
int getChild2Number(return pParent->m_Child2.m_number);
};
class CChild2
{
public:
CChild2() {};
m_number = 1;
}
мне было интересно, если кто-то может помочь с 1. Получение этого компилировать без изменения до структуры слишком много 2. Консультирование по вопросам лучшего способа, чтобы установить эти отношения вверх.
Откуда у вас этот код? Вы сами писали это с нуля? Почему вы не учитесь, читая книгу? –
Ну, кроме всего прочего, ваше понимание того, что это такое, просто неверно. 'this' является' CParent * ', что и ожидает конструктор. Вы разыгрываете его, что приводит к «CParent», что неверно. –
В качестве точки данных то, что вы пытаетесь сделать, создаст циклы зависимостей (например, «CParent -> CChild1 -> CParent»). Вам лучше было бы поставить общее состояние в отдельный класс и передать, например. 'shared_ptr' к каждому из дочерних классов. –