static修饰后的访问问题


struct Structure1
{
    void Function()
    {

    }
};
struct Structure2
{
    static Structure1 sre;
};
int main()
{
    Structure2 a;
    a.sre.Function();
    return 0;
}

会报错,如下图:

img

这是什么原因?

因为 static Structure1 sre; 这只是一个声明 并没有定义(初始化)

#include<iostream>
using namespace std;
struct Structure1
{
    void Function()
    {
        cout << "111" << endl;
    }
};
struct Structure2
{
    static Structure1 sre;
};

   Structure1 Structure2::sre;
int main()
{
    Structure2 a;
    a.sre.Function();
    return 0;
}