我正在尝试定义并声明一个类(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):错误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)
{
………..
}
我打算在这个函数“prepare”中调用我的类“ReorderInfo_DK”中的对象。
我将不胜感激。
此致 Dushyant
答案 0 :(得分:1)
如果MrProt
(变量)是某个地方的全局变量,那么您需要将extern
声明放在类之外,否则它将被视为班级ReorderInfo_DK
。
如果它不是全局变量,首先需要删除extern
关键字以将其声明为类中的成员变量,然后将实际实例传递给ReorderInfo_DK
构造函数,并且在构造函数初始化列表中分配它:
class ReorderInfo_DK
{
MrProt& MrProt;
public:
ReorderInfo_DK(MrProt& mrprot)
: MrProt(mrprot)
{}
};