当前位置: 代码迷 >> VC >> Cszie 结构体赋值异常
  详细解决方案

Cszie 结构体赋值异常

热度:9928   发布时间:2013-02-25 00:00:00.0
Cszie 结构体赋值错误
源码如下:
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下编译和运行都正常

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


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

CSize??

------解决方案--------------------------------------------------------
改用SIZE结构体试试。
  相关解决方案