struct TEST2
{
int D;
};
struct TEST1
{
int C;
TEST2 test2;
};
struct TEST
{
int A;
int B;
TEST1 test1;
};
TEST test;
怎么初始化test???

解决方案 »

  1.   

    TEST test = {0, 1, {2, {3}}};
    or:test.A = 0;
    test.B = 1;
    test.test1.C = 2;
    test.test1.test2.D = 3;
      

  2.   

    memset(&test, 0, sizeof(test));
      

  3.   

    虽然结构体属于值类型,但是你可以给结构体一个构造函数在构造的时候设置成员值,比如:
    struct TEST2 

    int D; 
        public TEST2(int d)
        {
           this.D=d;
        }
    }; 
      

  4.   

    memset(&test, 0, sizeof(test));把test所占用的 空间都 初始化为0.
      

  5.   

    采用结构体的构造函数直接初始化,可以编译通过.
    struct TEST2
    {
        int D;
    public:
        TEST2(int d=0){ D=d; };     
    };struct TEST1
    {
    int C;
    TEST2 test2;
    public:
    TEST1(TEST2 test=TEST2(0), int c=0) { test2.D = test.D; C=c; };
    };struct TEST
    {
    int A;
    int B;
    TEST1 test1;
    public:
    TEST(TEST1 test=TEST1(TEST2(0), 0), int a=0, int b=0)
    { test1.test2.D = test.test2.D; A=a; B=b;};
    }; 
      

  6.   

    1、 #3的memset方法。
    2、 #1的TEST test = {0, 1, {2, {3}}};
    3、 #9的构造函数方法。
      

  7.   

    TEST test = {0};
    最简单,哈哈
      

  8.   

    TEST test = {0, 1, {2, {3}}};
    or:test.A = 0;
    test.B = 1;
    test.test1.C = 2;
    test.test1.test2.D = 3;memset(&test, 0, sizeof(test));
    这些都试过了 不行 除了A能能赋值 其余都是0