错误消息“从'void *'到'unsigned int'的无效转换”

时间:2014-10-29 15:08:28

标签: c++

我有这个unsigned int函数(它是任务的给定函数)

// read data from virtual memory
unsigned int read(const int index) {
    return speicher[index];
}

speicher[index]中是一个数字,我必须在4个组件中解码。第一个组件是speicher[index] mod 16的值,第二个组件是我认为的值(speicher[index])/(16*16)mod16,依此类推。

错误消息的其他示例。也许我无法理解这个功能的作用:

对我来说,函数read(const int index)应该返回一个无符号的int数,我可以像程序中的“普通”其他无符号int号一样使用。

unsigned int index = 0;
unsigned int test = 1;
do {
    unsigned int hexzahl = read(index);
    test = read(index);
    index = index + 1;
} while (index <= 255 && read(index) != 0);
// 37 actually i want, that the program breaks if the content of read(index) is 0

我无法理解错误消息:

  

main.cpp:在函数'int main()'中:

     

main.cpp:37:错误:ISO C ++禁止指针和整数之间的比较

     

main.cpp:37:错误:从'char *()(const char ,int)'到'int'的无效转换

     

main.cpp:37:错误:初始化'unsigned int memory_read(int)'的参数1

2 个答案:

答案 0 :(得分:4)

您对此有何看法?

unsigned int hexzahl = (cout << dec << read(index));

这将打印该值,然后尝试将cout流的状态分配给整数。这没有任何意义,这就是它无法编译的原因。

如果您想将hexzahl设置为read的结果,那么就这样做:

unsigned int hexzahl = read(index);

如果您想打印该值,请单独执行:

cout << dec << hexzahl;

如果您想要read以外的其他内容,请更新问题以描述您要尝试的内容。

答案 1 :(得分:0)

错误是因为声明:

unsigned int hexzahl = (cout << dec << read(index));

cout的返回类型为void *。您正尝试将void *分配给unsigned int,这就是您发现错误的原因。

上述语句在C printf中是允许的,但在C ++ cout中则不允许。

unsigned int hexzahl = (printf("%u%u", dec,read(index));  //In C language

printf返回控制台上打印的字符数unsigned int。您可能在C ++中尝试相同的操作,这是不可能的。