請原諒我,我的C++有點生疏。對象引用必須在構造函數庫/成員初始值設定項列表中初始化
我試圖通過一個接口創建一個單例(這樣,系統可以很容易地在以後根據需要進行擴展)。
我已經得到了以下接口:
#ifndef IBUILD_CONFIGURATION_H
#define IBUILD_CONFIGURATION_H
*IBuildConfiguration.h*
class IBuildConfiguration
{
public:
virtual int foo(void) = 0;
};
IBuildConfiguration& BCInstance(void);
#endif /* IBUILD_CONFIGURATION_H */
而下面的具體類:
BuildConfiguration.h
#ifndef BUILD_CONFIGURATION_H
#define BUILD_CONFIGURATION_H
class BuildConfiguration : public IBuildConfiguration
{
public:
BuildConfiguration();
~BuildConfiguration();
virtual int foo(void);
};
#endif /* BUILD_CONFIGURATION_H */
BuildConfigration.cpp
BuildConfiguration::BuildConfiguration()
{
// init stuff
}
BuildConfiguration::~BuildConfiguration()
{
// destroy stuff
}
int BuildConfiguration::foo(void)
{
return 382000; //just for fun
}
// Singleton initialization function
IBuildConfiguration& BCInstance(void)
{
static BuildConfiguration instance = BuildConfiguration();
return instance;
}
現在,我試圖使用對象如下:
MyClass.h
#include "IBuildConfiguration.h"
class MyClass
{
private:
IBuildConfiguration& oFoo;
public:
MyClass();
};
MyClass.cpp
MyClass::MyClass()
{
oFoo = BCInstance();
}
不幸的是,這個結果在編譯器錯誤'oFoo' : must be initialized in constructor base/member initializer list
,我無法弄清楚發生了什麼事。由於