我希望访问类中声明的静态变量。根据{{3}}建议,我定义了两个文件,
在test.h中:
Import-Csv 'C:\input.csv' | Export-Csv 'C:\output.csv' -NoType -Delimiter '|'
在test.cpp中:
class foo
{
private:
static int i;
};
但是,当我执行#include "test.h"
int main(int argc, char* argv[]){
int foo::i = 0;
}
时,编译器仍会生成此错误。我正在使用mac:
make test
我该如何解决?
答案 0 :(得分:4)
int foo::i = 0;
属于全球范围,而不属于main
由于它是private
,main
将无法访问它。您必须使访问说明符限制较少(即public
)或为其创建访问者函数。
答案 1 :(得分:3)
...
static
数据成员的定义应出现在命名空间中 封闭成员类定义的范围。 ...
(C ++ 14 standard,[class.static.data] / 1)。
您无法像在尝试的那样在块范围内定义静态成员。
如果您希望main
有权访问私有成员,请编写公共访问者函数。或者让main
成为朋友(可能是个坏主意)。
答案 2 :(得分:0)
在此添加其他答案:
如果常量静态成员是整数或枚举类型,则可以在类定义中初始化它们:
struct X {
const static int n = 1;
const static int m{2}; // since C++11
};