结构体数组如何赋值?

卜占贤2021 2012-09-27 09:39:22

#include <IOSTREAM>
using namespace std;

struct paper
{
int number;
int color;
};
void main()
{
paper p1 = {1,1};
paper p[4] = {p1,p1,p1,p1};
}


就是这个p[4]赋值不了。报错如下:
error C2440: 'initializing' : cannot convert from 'struct paper' to 'int'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
求帮助啊。。难道只能一个一个赋值么?
...全文
1950 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2013-05-09
  • 打赏
  • 举报
回复
VC9 可以的。 struct paper{int x,y;}; const struct paper p={10,20}; struct paper p4[4]={p,p,p,p};
yqy1234hf 2012-10-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
C/C++ code

#include <IOSTREAM>
using namespace std;

struct paper
{
int number;
int color;
};
void main()
{
paper p1 = {1,1};
paper p[4] = {p1,p1,p1,p1};
}



就是这个p[……
[/Quote]

应该是数组定义出问题;http://wenku.baidu.com/view/19a56d2bbd64783e09122b0c.html 去这里看看;

这是里面的一段代码:

#include <stdlib.h>
#include <stdio.h>
struct stu
{
char name[20];
long number;
float score[4];
} ;
m a i n ( )
{
void input(); / *函数声明* /
void aver();
void order();
void output();
void out_row();
struct stu stud[4]; / * 定义结构体数组* /
float row[3];
i n p u t ( s t u d , 4 ) ; / *依此调用自定义函数* /
a v e r ( s t u d , 4 ) ;
o r d e r ( s t u d , 4 ) ;
o u t p u t ( s t u d , 4 ) ;
o u t _ r o w ( s t u d , 4 ) ;
}
ForestDB 2012-10-05
  • 打赏
  • 举报
回复
不要用VC6学标准C++。
lr624988991 2012-10-05
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
#define val {1,1}
struct paper
{
int number;
int color;
};
void main()
{
paper p1 = val;
paper p[4] = {val,val,val,val};
}
卖萌de猫 2012-10-05
  • 打赏
  • 举报
回复
这种用法貌似也不是标准用法。
卖萌de猫 2012-10-03
  • 打赏
  • 举报
回复
VC6通不过,是lz说的问题,不过能不这么用还是不这么用吧~
armsword 2012-10-03
  • 打赏
  • 举报
回复
这个应该是可以的吧 、
huangxy10 2012-10-03
  • 打赏
  • 举报
回复
VS2010通过。。。
pathuang68 2012-10-02
  • 打赏
  • 举报
回复
应该是可以滴。
wizard_tiger 2012-10-02
  • 打赏
  • 举报
回复
LZ什么编译器,应该没有问题。
自信男孩 2012-09-27
  • 打赏
  • 举报
回复
paper p1 = {1,1};
初始化有问题:
paper p1;
p1.number = 1;
p1.color = 1;
要么就在定义结构体时初始化,
struct pape
{
int number;
int color;
}p1[4] = { {1, 1}, {1, 1}, {1, 1}, {1, 1} };
叁叁玖玖 2012-09-27
  • 打赏
  • 举报
回复
vs 2010 下运行正常,能输出结果,LZ 什么编译器

struct paper
{
int number;
int color;
};

int _tmain(int argc, _TCHAR* argv[])
{
paper p = {1,2};
paper p1[4] = {p,p,p,p};
for(int i = 0;i < 4;i++)
{
std::cout << p1[i].color << std::endl;
std::cout << p1[i].number << std::endl;
}
system("pause");
return 0;
}
windmissing 2012-09-27
  • 打赏
  • 举报
回复
你的代码我试过了,能运行,而且能正确赋值
冷月清晖 2012-09-27
  • 打赏
  • 举报
回复
你需要使用重载运算符‘=’
ForestDB 2012-09-27
  • 打赏
  • 举报
回复
gcc表示没问题,LZ的环境??

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧