如何从嵌套类访问static int?

时间:2014-05-29 10:53:39

标签: c++ class

如何从c1 :: c2 :: func?

访问a1和a2
class 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'

的未定义引用

http://ideone.com/nK75A6

1 个答案:

答案 0 :(得分:1)

如果您定义静态数据成员,代码将被成功编译。

int c1::a1;
int c1::a2;

因为编译器似乎没有为语句生成目标代码

int f1= c1::a1; //works
int f2= c1::a2;

因为没有使用变量f1和f2,所以它不会打扰a1和a2尚未定义。