【发布时间】:2013-11-18 16:06:49
【问题描述】:
这个让我难过。我想要做的是在包装类中获取一个引用变量以指向它包装的类中的结构对象,以便使用包装类的其他类的结构中的任何变量设置实际上都设置在包装类而不是包装类。为此,我尝试简单地在包装类中创建对包装类中结构的引用,例如
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 未初始化。
所以在 ClassWrap 的 ctor 中,我尝试初始化它。
PlotArgs = AppIfx.PlotArgs;
其中 AppIfx 在运行时设置为指向 CClass 对象的指针。编译器不喜欢这样,错误 C2758 变量必须在构造函数基/成员初始化列表等中初始化...
如果看起来我正在尝试做一些我完全清楚如何做的事情,那肯定是这样!任何帮助将非常感激。
【问题讨论】:
-
...它本身就是stackoverflow.com/q/3168238/2513200的副本
标签: c++ inheritance reference addressing