源码如下:
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结构体试试。