结构体内结构体类型成员变量怎么初始化?

时间:2021-02-12 19:50:21

struct A
{
int a;
};
struct B
{
int n;
A m;
};



怎么为B里的m初始化?

16 个解决方案

#1


可以给A加个构造函数

#2


引用 1 楼  的回复:
可以给A加个构造函数


怎么加?

#3


如果是C语言的话,那么可以给结构体B加一个初始化函数。

#4


在c++里 struct可以当class来用,struct默认的访问控制符为public,最好加个构造函数

#5


引用 4 楼  的回复:
在c++里 struct可以当class来用,struct默认的访问控制符为public,最好加个构造函数


新手,不知道怎么给struct加构造函数。求解。

#6


struct A
{
int a;
public:
 A():a(0){}
};
struct B
{

int n;
A m;
public:
  B():n(0){}

};
就可以了

#7


引用 6 楼  的回复:
struct A
{
int a;
public:
 A():a(0){}
};
struct B
{

int n;
A m;
public:
  B():n(0){}

};
就可以了


如果这时有新的类,如:
class C
{
pulibc:
c();
~c();

void Show();
}

我需要在C类的Show()函数,用到结构体B,那这时如何如初始化B中的m呢?

#8


B中的m已经调用了A的默认构造了,已经初始化好了

#9


这个问题我也遇到过,来学习一下

#10


引用 8 楼  的回复:
B中的m已经调用了A的默认构造了,已经初始化好了


在debug下,你说的这个是成立的,我当时也这么想。
但在release下,总是提示:Access violation writing location
这个错误

#11


定义一个B的变量b,这样应该可以初始化吧:(b.m).a

#12


我这里Debug和Release都是好的

#13


struct A
{
int a;
};

struct B
{
int n;
A m;
};

main()
{

B BB;
BB.m = 99999;
}

#14


初始化列表
B x = { 1, {2} };

#15


虽然没有我想要的答案,但还是结贴吧。

#16


这个讨论不错,IAR可以不对结构体变量初始化,Keil不初始化老报警“使用前没赋值”

#1


可以给A加个构造函数

#2


引用 1 楼  的回复:
可以给A加个构造函数


怎么加?

#3


如果是C语言的话,那么可以给结构体B加一个初始化函数。

#4


在c++里 struct可以当class来用,struct默认的访问控制符为public,最好加个构造函数

#5


引用 4 楼  的回复:
在c++里 struct可以当class来用,struct默认的访问控制符为public,最好加个构造函数


新手,不知道怎么给struct加构造函数。求解。

#6


struct A
{
int a;
public:
 A():a(0){}
};
struct B
{

int n;
A m;
public:
  B():n(0){}

};
就可以了

#7


引用 6 楼  的回复:
struct A
{
int a;
public:
 A():a(0){}
};
struct B
{

int n;
A m;
public:
  B():n(0){}

};
就可以了


如果这时有新的类,如:
class C
{
pulibc:
c();
~c();

void Show();
}

我需要在C类的Show()函数,用到结构体B,那这时如何如初始化B中的m呢?

#8


B中的m已经调用了A的默认构造了,已经初始化好了

#9


这个问题我也遇到过,来学习一下

#10


引用 8 楼  的回复:
B中的m已经调用了A的默认构造了,已经初始化好了


在debug下,你说的这个是成立的,我当时也这么想。
但在release下,总是提示:Access violation writing location
这个错误

#11


定义一个B的变量b,这样应该可以初始化吧:(b.m).a

#12


我这里Debug和Release都是好的

#13


struct A
{
int a;
};

struct B
{
int n;
A m;
};

main()
{

B BB;
BB.m = 99999;
}

#14


初始化列表
B x = { 1, {2} };

#15


虽然没有我想要的答案,但还是结贴吧。

#16


这个讨论不错,IAR可以不对结构体变量初始化,Keil不初始化老报警“使用前没赋值”