![](/img/trans.png)
[英]How to initialize a static member variable using a static member function at runtime?
[英]How to initialize static constant member using function
在一個非常簡化的情況下,我具有以下設置,在該設置中,我只想從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
你能幫我嗎? 會贊賞的。
您將getInstance
用作靜態函數,但未將其聲明為static
。
更改getInstance
的聲明:
static A & getInstance() { return instance; }
代碼有幾個問題,但這是一個完整的可編譯示例:
class A
{
public:
static A instance;
static A & getInstance() { return instance; }
int i(){ return 10;}
int j(){ return 20;}
};
class foo {
public:
static const int ii;
};
const int foo::ii = A::getInstance().i() * A::getInstance().j();
A A::instance;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.