Использование ссылок для доступа к объектам класса C ++
Это меня поставило в тупик. Что я'Я пытаюсь сделать, это получить ссылочную переменную в классе-оболочке, чтобы указать на объект структуры в классе, который он оборачивает, так что любые установки переменных в структуре из других классов, которые используют класс-обертку, фактически устанавливаются в классе обернутых не класс обертки. Для этого я попытался просто создать ссылку в классе обертки на структуру в обернутом классе, например
class CClassWrap
{
CClass::plot_type& PlotArgs;
}
а затем инициализировать PlotArgs
CClassWrap::InitWrap( CClass AppIfx )
{
PlotArgs = AppIfx.PlotArgs;
}
Я просто хочу, чтобы PlotArgs указывал на упакованный класс PlotArgs, чтобы при доступе к PlotArgs
class StudiesBase:public CClassWrap
{
//12 should show up in CClass because PlotArgs in CClassWrap points to the PlotArgs on CClass.
PlotArgs.value = 12;
}
12 отображается в версии PlotArgs с классами оберток. Для этого я попытался установить ссылку, определенную в файле .h, следующим образом
#include "CClass.h"
class CClassWrap
{
//PlotArgs is a struct with a few vars in it (int, long, etc.) that exists in CClass
CClass::plot_type& PlotArgs;
}
CClassWrap наследуется в другом классе, назовите его StudiesBase
class StudiesBase:: public CClassWrap
{
etc...
}
Когда это скомпилировано, выдается сообщение о том, что для CClassWrap не существует ctor по умолчанию. Поэтому я добавляю Ctor
такой, что CClassWrap теперь выглядит
class CClassWrap
{
public:
CClassWrap();
public:
//PlotArgs is a struct with a few vars in it (int, long, etc.) that exists in CClass
CClass::plot_type& PlotArgs;
}
Это приводит к ошибке C2758 о том, что PlotArgs не инициализируется.
Так что в ctor для ClassWrap я пытаюсь его инициализировать.
PlotArgs = AppIfx.PlotArgs;
где AppIfx устанавливается во время выполнения как указатель на объект CClass. Компилятор нет. к. либо с ошибкой C2758 переменная должна быть инициализирована в базе конструктора / в списке инициализаторов элементов и т. д.
Если кажется, что япытаюсь сделать то, что яЯ совершенно ясно, как это сделать, безусловно, будет иметь место! Любая помощь приветствуется.