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

Sus*_*lik 0 c++

我有这个unsigned int功能(这是任务的给定功能)

// read data from virtual memory
unsigned int read(const int index) {
    return speicher[index];
}
Run Code Online (Sandbox Code Playgroud)

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

带有错误消息的另一个示例。也许我无法理解该函数的作用:

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

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

我无法理解错误消息:

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

Mik*_*our 5

你希望这有什么作用?

unsigned int hexzahl = (cout << dec << read(index));
Run Code Online (Sandbox Code Playgroud)

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

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

unsigned int hexzahl = read(index);
Run Code Online (Sandbox Code Playgroud)

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

cout << dec << hexzahl;
Run Code Online (Sandbox Code Playgroud)

如果您想要的不是 的结果read,那么请更新问题以描述您正在尝试做什么。

  • @chris:可能是因为(在 C++11 之前)有一个 `operator void*` 允许 `if (cout)` 但不允许转换为整数类型。现在,有一个“显式运算符 bool()”代替。 (5认同)