Cszie 结构体赋值错误

yousheng324 2011-08-22 10:25:32
源码如下:
typedef struct
{
int x;
int y;
Csize size;
}IntStur;

//在函数中初始化
IntStur stur[] = {
{1,2,Csize(0,0)},
{2,2,Csize(0,0)}
};
出现错误提示
error C2440: 'initializing' : cannot convert from 'const int' to 'IntStur '
No constructor could take the source type, or constructor overload resolution was ambiguous

但是在vc2010下编译和运行都正常
...全文
59 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yousheng324 2011-08-24
  • 打赏
  • 举报
回复
具体解决方法是
IntStur stur[2];
stur[0].x = 1;
stur[0].y = 2;
stur[0].size.cx = 0;
stur[0].size.cy = 0;

stur[1]的赋值方法同上。
还有一种方法是给struct IntStur 增加拷贝构造函数,写成类的形式。这个方法没有试。简单的方法易读易懂。
huangdi7922 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yousheng324 的回复:]

问题已解决。
[/Quote]

怎么解决的啊?楼主说下,后来人好有个参照啊
yousheng324 2011-08-23
  • 打赏
  • 举报
回复
问题已解决。
gold_water 2011-08-23
  • 打赏
  • 举报
回复
改用SIZE结构体试试。
真相重于对错 2011-08-22
  • 打赏
  • 举报
回复

CSize??
ajaxtop 2011-08-22
  • 打赏
  • 举报
回复
这个问题首先得理解指针常量和常量指针的区别,简单的说指针常量即指针是常量,也就是指针的指向不能再改变了。常量指针即指针指向的内容是常量,即指针指向的内容是不能改变的。
一般区分这两种指针可以看const的位置,如果定义的时候再 * 前则为常量指针,在 * 后面则为指针常量。问题中对const变量ic取址即类似于定义了一个常量指针,而 int *const cpi则定义了一个指针常量。两个完全不一样的东西赋值,因此会报类型转换错误!


这个是我找的,你看下,你这个代码是这里报的错吗
在看看初始化的时候是怎么回事
有没有类型转换这样的动作

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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