相关疑难解决方法(0)

为什么没有从指针到const指针的引用的隐式转换

我将用代码说明我的问题:

#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;
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时(在VS2008中)我得到了这个:错误C2664:'PrintInt':无法将参数1从'unsigned char*'转换为'const unsigned char*&'.如果我取消注释"const"注释它可以正常工作.

但是不应该指针隐式转换成const指针然后引用?期待这个工作我错了吗?谢谢!

c++ pointers reference

9
推荐指数
2
解决办法
8091
查看次数

标签 统计

c++ ×1

pointers ×1

reference ×1