C++ 如何将一个静态结构体数组初始化?

如structMyStruct{CStringname;inta;};classA{public:staticstructMyStructmyStruct[10][1];...
struct MyStruct
{
CString name;
int a;
};
class A
{
public:
static struct MyStruct myStruct[10][1];
};
展开
 我来答
匿名用户
2015-08-11
展开全部
  结构体也可以有构造函数,用默认构造函数就可以在new数组的时候初始化。
  如果需要成员有初始值,则需要写构造函数,否则直接memset初始化为0即可。
  参考如下:
  struct _tagA
  {
  int a1;

  _tagA()
  {a1 = 1;}
  }a[100];
  memset(&a, 0, sizeof(a));
徐徐随风倒
2013-04-04 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:120
采纳率:100%
帮助的人:160万
展开全部
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;

}
};
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
潘达lya
2013-04-04 · TA获得超过1476个赞
知道小有建树答主
回答量:509
采纳率:0%
帮助的人:456万
展开全部
struct有个构造函数就行了。。。
追问
struct 好像是不能有构造函数的
追答
C++可以有,还能有成员函数,私有成员和公共成员,运算符重载都行。。。Struct的成员默认的都是公有的,类全是默认私有,区别仅此而已,其他的貌似和类没区别(反正我没发现),他也可以继承一个类。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chujiangke001
2013-04-05 · TA获得超过1605个赞
知道小有建树答主
回答量:1352
采纳率:0%
帮助的人:718万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
abcDotday
2013-04-04
知道答主
回答量:22
采纳率:0%
帮助的人:15.4万
展开全部
直接赋值不久行了吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式