c++ - 访问来自不同类的对象

标签 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) : 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/

相关文章:

c++ - 标准中哪里说 U::j 的默认成员初始值设定项应该被编译器忽略?

c++ - 将数字合并到对象的名称

c++ - 将数字传递给成员函数导致程序崩溃

C# 计算重复数字

java - 可以将对象传递给方法以提高发送单个参数的性能

javascript - 将函数原型(prototype)设置为新对象

c++ - Apple C 模块进入 Xcode 工具链是否有时间表?

c++ - 如何封装一个线程?

java - 如何编写不同典型 Java 类的实例?

c++ - 像测试指针一样测试 C++ 对象的有效性