如何从c1 :: c2 :: func?
访问a1和a2class c1
{
public:
class c2
{
protected:
static void func();
};
public:
static int a1;
private:
static int a2;
};
void c1::c2::func()
{
int f1= c1::a1; //works
int f2= c1::a2;
c1::a1= 1; //fails
c1::a2= 2;
printf("func");
}
错误:
prog.cpp :(。text + 0xc):对
的未定义引用c1::a1' prog.cpp:(.text+0x16): undefined reference to
c1 :: a2'
答案 0 :(得分:1)
如果您定义静态数据成员,代码将被成功编译。
int c1::a1;
int c1::a2;
因为编译器似乎没有为语句生成目标代码
int f1= c1::a1; //works
int f2= c1::a2;
因为没有使用变量f1和f2,所以它不会打扰a1和a2尚未定义。