被自己定义的函数弄晕了....
一段解码函数,我把参数定义成了指针的引用
BYTE *&DataHandle::DecodeCode(BYTE *&pSourceBuffer,long& lSourceSize,BYTE *&pDestBuffer)
{
mConfig->pInputBuffer = pSourceBuffer ; //pSourceBuffer :AAC data
mConfig->inputBufferCurrentLength = lSourceSize ; //aac size
mConfig->inputBufferUsedLength = 0;
Int decoderErr;
decoderErr = PVMP4AudioDecodeFrame(mConfig, mDecoderBuf);//解码函数
if (decoderErr==0)
{
memcpy(pDestBuffer,out_buf,4096);//解码输出到pDestBuffer
}
else
{
AfxMessageBox(_T("解码错误!"));
}
return pDestBuffer;
}
于是我调用它,rtpBuff为char*型,char *rtpBuff;
//报错!错误为不能将参数 1 从“BYTE *”转换为“BYTE *&”
BYTE *pDestBuffer = DecodeCode((BYTE*)rtpBuff,plenHeader->data_size,pDestBuffer);//编译器报错!!!!
可是我改成如下就没错了
BYTE *pDestBuffer = DecodeCode((BYTE*&)rtpBuff,plenHeader->data_size,pDestBuffer);//编译器不报错了!!!
指针的引用为参数,那么不就是传个指针进去就行了嘛,为什么还要加个&?????????
求解。。。。
[解决办法]
指针的引用为参数,那么不就是传个指针进去就行了嘛,为什么还要加个&?????????
======
不一样的,传指针引用进去就可以修改原变量的值。这么玩可以达到如下效果:
BYTE* data;method_to_get_data(data);if (data==NULL) { // 函数没有给数据}else { // 函数给了你数据}
[解决办法]
BYTE *DataHandle::DecodeCode(BYTE *pSourceBuffer,long& lSourceSize,BYTE *pDestBuffer)
你这样定义函数接口不行吗?为什么还要加&?如果要改变指针的值就用**,没有见过*&这会混用的
[解决办法]