【发布时间】:2011-02-23 21:27:32
【问题描述】:
我将用代码说明我的问题:
#include <iostream>
void PrintInt(const unsigned char*& ptr)
{
int data = 0;
::memcpy(&data, ptr, sizeof(data));
// advance the pointer reference.
ptr += sizeof(data);
std::cout << std::hex << data << " " << std::endl;
}
int main(int, char**)
{
unsigned char buffer[] = { 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, };
/* const */ unsigned char* ptr = buffer;
PrintInt(ptr); // error C2664: ...
PrintInt(ptr); // error C2664: ...
return 0;
}
当我运行这段代码(在 VS2008 中)时,我得到这个:错误 C2664: 'PrintInt' : cannot convert parameter 1 from 'unsigned char *' to 'const unsigned char *&'。如果我取消注释“const”注释,它可以正常工作。
但是,不应该指向指向const指针,然后采取引用?我期望这行得通是错的吗?谢谢!【问题讨论】: