在一個非常簡化的情況下,我有以下設置,其中,我只是想從類A的函數(單例和實例無關)初始化一個常量靜態成員(類foo)對這個問題):如何使用函數初始化靜態常量成員
class A
{
public:
static A instance;
A & getInstance() { return instance; }
int i(){ return 10;}
int j(){ return 20;}
};
class foo {
public:
static const int ii = A::getInstance().i() * A::getInstance().j();
};
const int foo::ii;
int main()
{
foo f;
return 1;
}
目的是使用上面的函數初始化成員ii。但它會產生以下錯誤:
$ c++ static_constant.cpp
static_constant.cpp:14:30: error: ‘A::getInstance()’ cannot appear in a constant-expression
static_constant.cpp:14:42: error: a function call cannot appear in a constant-expression
static_constant.cpp:14:44: error: ‘.’ cannot appear in a constant-expression
static_constant.cpp:14:46: error: a function call cannot appear in a constant-expression
static_constant.cpp:14:53: error: ‘A::getInstance()’ cannot appear in a constant-expression
static_constant.cpp:14:65: error: a function call cannot appear in a constant-expression
static_constant.cpp:14:67: error: ‘.’ cannot appear in a constant-expression
static_constant.cpp:14:69: error: a function call cannot appear in a constant-expression
請問你能幫我嗎?將欣賞它。
看到這個鏈接上的評論http://stackoverflow.com/ a/407753/720176 – aProgrammer
真的沒有看到downvote的原因。 @anDroider:同樣不要理解,鏈接的評論與這個問題有什麼關係。你可以解釋嗎。 –
我不是DownVoter, – aProgrammer