我正在尝试定义和声明一个类 (ReorderInfo_DK),它需要从我的主代码“FlashBack.cpp”中引用另一个旧对象 (MrProt &rMrProt)。但是,我不完全知道如何将对象从主文件传输到头文件,因此,我收到无法修复的错误:
z:\n4\pkg\mrservers\mrimaging\seq\cestipat\ReorderInfo_DK.h(11):错误 C2071:“ReorderInfo_DK::rMrProt”:非法存储类 z:\n4\pkg\mrservers\mrimaging\seq\cestipat\ReorderInfo_DK.h(22) : error C2758: 'ReorderInfo_DK::rMrProt' : 必须在构造函数基/成员初始化列表中初始化
“ReorderInfo_DK.h”内部:
# include "MrServers/MrProtSrv/MrProt/prot.h"
class ReorderInfo_DK {
extern MrProt &rMrProt;
long lREOIndex;
public:
ReorderInfo_DK ();
~ReorderInfo_DK ();
long getLinNo (long lREOIndex);
};
ReorderInfo_DK::ReorderInfo_DK(){
lREOIndex = 0;
}
ReorderInfo_DK::~ReorderInfo_DK(){
}
内部主要代码 “FlashBack.h”中有前向声明
// Forward declarations
class MrProt;
然后,主代码中的所有函数都使用“MrProt &rMrProt”作为参数,例如:
NLSStatus FlashBack::prepare (MrProt &rMrProt, SeqLim &rSeqLim, SeqExpo &rSeqExpo)
{
………..
}
我计划在“准备”函数中调用我的类“ReorderInfo_DK”中的对象。
如有任何帮助,我将不胜感激。
问候, 杜尚特
最佳答案
如果 MrProt
(变量)是某处的全局变量,那么您需要将 extern
声明放在类之外,或者它将被视为 ReorderInfo_DK
类的一部分。
如果不是全局变量,首先需要去掉extern
关键字声明为类中的成员变量,然后将实际实例传递给ReorderInfo_DK
构造函数,并将其分配到构造函数初始化列表中:
class ReorderInfo_DK
{
MrProt& MrProt;
public:
ReorderInfo_DK(MrProt& mrprot)
: MrProt(mrprot)
{}
};
关于c++ - 访问来自不同类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18811599/