gpt4 book ai didi

c++ - 无法将成员变量设置为对象引用

转载 作者:行者123 更新时间:2023-11-30 04:11:35 25 4
gpt4 key购买 nike

在我的类(class)中,我有一个这样的私有(private)成员:ISymbolFactory& mSymbolFactory;

然后我有一个以 ISymbolFactory& 作为参数的 SetFactory 方法。

如果我想将 mSymbolFactory 设置为另一个对象(实现为 singelton)只能执行一次。如果我想覆盖成员变量,那么它就不会正确。它会停留在我设置为此变量的第一个对象上。

成员方法是这样调用的:SetFactory(SomeFactory::GetInstance());

类(class):

class SymbolParser: public Object {
private:
ISymbolFactory& mSymbolFactory;
public:
SymbolParser();
~SymbolParser();
void SetFactory(ISymbolFactory& symbolFactory);
};

我的方法的一部分:

void SymbolParser::SetupSymbolParser(ISymbolFactory& symbolFactory) {
mSymbolFactory = symbolFactory;
.....
}

也许我不得不提到构造函数像这样初始化变量(这是我坚持的对象):

SymbolParser::SymbolParser() : mSymbolFactory(JavaFactory::GetInstance()) {}

最佳答案

如果您希望能够在运行时分配给其他对象,请使用指针而不是引用对象。

这样做:

class SymbolParser: public Object {
private:
ISymbolFactory* mSymbolFactory;
public:
SymbolParser();
~SymbolParser();
void SetFactory(ISymbolFactory& symbolFactory);
};

在您的 segmentation 中:

void SymbolParser::SetupSymbolParser(ISymbolFactory& symbolFactory) {
mSymbolFactory = &symbolFactory;
.....
}

关于c++ - 无法将成员变量设置为对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20176373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com