c++中关于 指针的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 11:06:37
TPoint *gTPoint=new TPoint(50,50); 正确

我如果这么定义的话

TPoint gTPoint=new TPoint(50,50);
就出现错误
error C2440: 'initializing' : cannot convert from 'TPoint *' to 'TPoint'
No constructor could take the source type, or constructor overload resolution was ambiguous

下面是定义
TPoint(TUninitialized) {}
inline TPoint();
inline TPoint(TInt aX,TInt aY);
问下 那个错误是怎么回事呀
而在同一个项目中别的类,在实例化的时候还不能在前面加*,一加 就出现问题 。。。 请大家讲下 C++不是很熟 这种问题不敢问单位的同事怕他们笑我 哎。。

你说的:
"而在同一个项目中别的类,在实例化的时候还不能在前面加*,一加 就出现问题"
希望能给出示例出来.
没有强制转换的情况下不可能编译通过的,除非你遇到的是一个垃圾级的编译器.

不排除有人这么使用:
typdef TPoint* TPointPtr;
TPointPtr gTPoint = new TPoint(50,50);
这样是OK的,但实际上gTPoint还是一个指针!

----------------------------------------
TPoint gTPoint=new TPoint(50,50);
====

gTPoint只是普通的TPoint变量,
而右边是new出来的TPoint指针,
一个指针赋值给一个变通变量,就出现你那样的问题...

你可以将其理解为简单类型:
int i = new int(10); // ERROR
int *i_ptr = new int(10); //OK
你的错误等同于第一行的错误!

TPoint *gTPoint=new TPoint(50,50); //这样旧可以了!呀!