c++ 中关于&的使用

来源:百度知道 编辑:UC知道 时间:2024/06/17 02:28:48
IMPORT_C TPtrC16::TPtrC16(const TDesC16 &aDes):TDesC16(TPtrC16_TYPE,aDes.Length())
{
//not_implement();
TUint16* aBuf = (TUint16*)aDes.Ptr();
int aLength = aDes.Length();

DoSetLength(aLength);
iPtr = (TUint16*)mymalloc(aLength * 2 + 2);
if(aLength > 0)
memcpy((char*)iPtr, (char*)aBuf, aLength * 2);
memset((char*)iPtr + aLength * 2, '\0', 2);
}
上面是构造函数。
下面是我初始化那个函数。

TDesC16 *ades1=new TDesC16(1,30);
TPtrC16 gTPtrC16 =new TPtrC16(ades1);这行老是报错
cannot convert parameter 1 from 'TDesC16 *' to 'const TDesC16 &'
Reason: cannot convert from 'TDesC16 *' to 'const TDesC16'
请问下应该怎么写
const TDesC16 &aDes不是说一个16位的 常量地址就可以吗 ,我C++学的不是太好大家帮下忙。

const TDesC16 &aDes表示是一个TDesC16类型的引用类型的对象。
他需要的是对象,你给它传的是TDesC16类型的指针,也就是地址,当然不对,要传地址里的内容,也就是那个对象。
改成TPtrC16 gTPtrC16 =new TPtrC16(*ades1);应该就ok了