[英]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.