从不同的类访问对象

时间:2013-09-15 11:00:49

标签: c++ class object

我正在尝试定义并声明一个类(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

1 个答案:

答案 0 :(得分:1)

如果MrProt(变量)是某个地方的全局变量,那么您需要将extern声明放在类之外,否则它将被视为班级ReorderInfo_DK

如果它不是全局变量,首先需要删除extern关键字以将其声明为类中的成员变量,然后将实际实例传递给ReorderInfo_DK构造函数,并且在构造函数初始化列表中分配它:

class ReorderInfo_DK
{
    MrProt& MrProt;

public:
    ReorderInfo_DK(MrProt& mrprot)
        : MrProt(mrprot)
     {}
};