C++ 如何将一个静态结构体数组初始化?
发布网友
发布时间:2022-04-25 01:17
我来回答
共5个回答
热心网友
时间:2023-10-19 05:34
结构体也可以有构造函数,用默认构造函数就可以在new数组的时候初始化。
如果需要成员有初始值,则需要写构造函数,否则直接memset初始化为0即可。
参考如下:
struct _tagA
{
int a1;
_tagA()
{a1 = 1;}
}a[100];
memset(&a, 0, sizeof(a));
热心网友
时间:2023-10-19 05:34
1. 写构造函数来 给默认值
你这个是C++ 的语法,C++ 中 结构体和类的使用是等同的 只有细微的差别 所以他可以有构造函数
2.自己赋值 满足自己的初始需要 比 构造函数灵活点 方法:
struct MyStruct
{
string name;
int a;
};
class A
{
public:
static struct MyStruct myStruct[10][1];
};
MyStruct A::myStruct[10][1] = {{"123",1},{"123",1},{"123",1},{"123",1},{"123",1},{"123",1},{"123",1},{"123",1},{"123",1},{"123",1}};
在类外面这样赋值就可以了
调用的时候:
int main()
{
cout<< A::myStruct[0][0].name.c_str();
getchar();
return 0;
}
我实在linux 给你调试的 所以 CString 改为了 string 你改回去就可以了 测试OK ,望采纳~~追问嗯哪,谢谢~不过可不可以不都写完10个?
MyStruct A::myStruct[10][1] = {{"123",1},};这样? 我试试~
追答是不可以的,结构体的赋值 和 数组的赋值不一样, 如果你是想让每一个初始化成一样的值 ,那么建议你实现结构体的构造函数
struct MyStruct
{
string name;
int a;
MyStruct()
{
name = "123";
a = 1;
}
};
热心网友
时间:2023-10-19 05:35
struct有个构造函数就行了。。。追问struct 好像是不能有构造函数的
追答C++可以有,还能有成员函数,私有成员和公共成员,运算符重载都行。。。Struct的成员默认的都是公有的,类全是默认私有,区别仅此而已,其他的貌似和类没区别(反正我没发现),他也可以继承一个类。。。
热心网友
时间:2023-10-19 05:35
#include<iostream>
#include<string>
using namespace std;
struct MyStruct
{
string name;
int a;
};
class A
{
public:
static MyStruct myStruct[3];
};
MyStruct A::myStruct[3]={{"xiao",1},{"ji",2},{"ba",3}};
int main()
{
A a;
cout << a.myStruct[0].name << a.myStruct[0].a << endl;
}
热心网友
时间:2023-10-19 05:36
直接赋值不久行了吗