warum keine implizite Konvertierung von Zeiger auf Referenz auf const-Zeiger

Werde ich veranschaulichen meine Frage mit code:

#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;
}

Wenn ich diesen code ausführen (in VS2008) bekomme ich: error C2664: 'PrintInt' : cannot convert parameter 1 from 'unsigned char *' in 'const unsigned char *&'. Wenn ich die Auskommentierung der "const" - Kommentar, es funktioniert gut.

Allerdings sollten sich nicht-Zeiger implizit konvertieren in const-Zeiger, und dann Bezug genommen werden? Bin ich falsch mit der Erwartung an diese Arbeit? Danke!

InformationsquelleAutor user316606 | 2010-05-25
Schreibe einen Kommentar