Использование ссылок для доступа к объектам класса 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 переменная должна быть инициализирована в базе конструкторов / списке инициализаторов элементов и т. Д ...
Если окажется, что я пытаюсь сделать что-то, что мне совершенно ясно, как это сделать, то это определенно так! Любая помощь приветствуется.