"Invalid use of non-static data member" 从全局变量初始化静态成员时
"Invalid use of non-static data member" when initializing static member from global variable
class A {
int x;
static int i;
};
int x = 10;
int A::i = x;
当我编译上面的代码时,出现错误
<source>:8:12: error: invalid use of non-static data member 'A::x'
8 | int A::i = x;
| ^
<source>:2:9: note: declared here
2 | int x;
| ^
导致此错误的原因是什么?
这是一种特殊的语言怪癖 - int A::i
中左侧的作用域解析会影响右侧的查找作用域,因此实际上指的是 [=13] 的 x
成员=].
重命名其中一个变量,或明确指定所需 x
的范围:
int A::i = ::x;
class A {
int x;
static int i;
};
int x = 10;
int A::i = x;
当我编译上面的代码时,出现错误
<source>:8:12: error: invalid use of non-static data member 'A::x'
8 | int A::i = x;
| ^
<source>:2:9: note: declared here
2 | int x;
| ^
导致此错误的原因是什么?
这是一种特殊的语言怪癖 - int A::i
中左侧的作用域解析会影响右侧的查找作用域,因此实际上指的是 [=13] 的 x
成员=].
重命名其中一个变量,或明确指定所需 x
的范围:
int A::i = ::x;