结构体的整体赋值问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 19:03:54
c++编程
vc++编译器
struct data
{
int arr[8];
data* next;
}d1,d2,d3;
d1={{1,0,0,1,1,1,1,1},&d2};
编译无法通过
别告诉我没有main
我写的只是核心
我的问题是,如果d1在定义的时候没有初始化,
当我想对其进行整体赋值应该怎么做呢?
如果答案好再加十分,绝对不食言
在vc里面 ,在类里面,
比如
class CDDD
{
public:
......;
private:
data d1;
//似乎不能写成 data d1={......};因为那样好像在ClassView面板里面将会看不到d1的存在,
//所以我才感觉d1的定义和初始化必须分开,有什么解决的好办法吗?
}
等待回复
一楼和二楼 以为我傻吗?如果这样就解了问题到这里来干什么!!
三楼 告诉你 ,我当然试过,我又不是没有编过程序,这点基本常识我还是明白的 ,你和他们一样,看题看仔细点,最不喜欢这种乱答问题来得分的人了,看清楚了再答题啊
六楼的朋友 你能给个例子 怎么赋值的吗?
谢谢你
给十分,在给30分奖励,也很感谢lulufear,你的建议也很好,可惜答案之能选一个,至于qgwqiuguowei,我开始就说的很清楚,定义和初始化分开,为什么还要给我定义与初始化在一起的答案呢!BS你这种人

不知道是不是指的我,我还是把完整的程序写出来吧

如果是类里面的话,可以将其设置成静态成员变量,然后在外面初始化,另外最好还加一个成员函数,专门用来改变这个静态成员变量的值.

#include<iostream>

using namespace std;

typedef struct ddd
{
int arr[8];
}data;

class A
{
private:
static data d;
public:
void change(data &dt)
{
for(int i=0;i<8;i++)
d.arr[i]=dt.arr[i];
}
void Print()
{
for(int i=0;i<8;i++)
cout<<d.arr[i]<<'\t';
cout<<endl;
}
};

data A::d={1,0,0,1,1,1,1,1};

int main()
{
data b={1,1,1};
A a;
a.Print();
a.change(b);
a.Print();
return 0;
}

整体初始化怎么能那样写呀?
struct data
{
int arr[8];
data* next;
}d2,d3,d1={{1,0,0,1,1,1,1,1},&d2};
这样才行,只能在定义的时候同时整体初始化.
这和数组整体初始化一个道理,比如整型数组:
int a[]={1,2,3,4,5}这样是可以的,而
int a[5];
a[]={1,2,3,4,5}编译是不会通过的