簡體   English   中英

無法將成員變量設置為對象引用

[英]can't set member variable as object reference

在我的課堂上,我有一個像這樣的私有成員:ISymbolFactory&mSymbolFactory;

然后我有一個以ISymbolFactory&為參數的SetFactory方法。

如果我想將mSymbolFactory設置為另一個對象(將其實現為singelton )只能執行一次。 如果我想覆蓋成員變量,那么它將無法正確執行。 它將卡在我設置為此變量的第一個對象上。

成員方法的調用方式如下:SetFactory(SomeFactory :: GetInstance());

類:

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);
};

在您的細分中:

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

Symbolparser(Symbolfactory&symbolFactory):mSymbolFactory(symbolFatory){}

您可以在構造函數中初始化引用

請使用以下代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM