2014-10-29 53 views
0

我有這個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)應該返回一個無符號整數,我可以像程序中的「正常」其他無符號整數一樣使用。

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: In function ‘int main()’:

main.cpp:37: error: ISO C++ forbids comparison between pointer and integer

main.cpp:37: error: invalid conversion from ‘char* ()(const char, int)’ to ‘int’

main.cpp:37: error: initializing argument 1 of ‘unsigned int memory_read(int)’

+4

推測'speicher'擁有'void *'。 – chris 2014-10-29 15:10:08

+1

請將錯誤日誌粘貼在生成錯誤的行周圍的行號和確切代碼+/- 5行。 – 2014-10-29 15:10:55

+1

'speicher'的類型是什麼? – clcto 2014-10-29 15:11:45

回答

4

你怎麼想到這個做什麼?

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

這將輸出值,然後嘗試將cout流的狀態分配給一個整數。這沒有意義,這就是爲什麼它不會編譯。

如果你想設置hexzahlread的結果,那麼就這樣做:

unsigned int hexzahl = read(index); 

,如果你要打印的值,那麼做到這一點分開:

cout << dec << hexzahl; 

如果您想要得到read的結果以外的內容,那麼請更新問題以描述您正在嘗試執行的操作。

+0

不過,我沒有看到任何錯誤使用'void *'而不是'ostream'的原因。 – chris 2014-10-29 15:15:04

+5

@chris:可能是因爲(在C++ 11之前)有一個'operator void *'來允許'if(cout)'但不允許轉換爲整數類型。這些天,有一個'顯式運算符bool()'而不是。內存中的 – 2014-10-29 15:16:30

+0

[index]是一個hex.number。我必須將這個數字分爲四部分。所以我想輸出內存[索引]的內容,然後採取數字的模16。 – Susliks 2014-10-29 15:20:17

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++中的相同,這是不可能的。

+0

謝謝!你知道我怎麼能返回read(index)的值。這樣我可以對值0和read(index)的值進行比較? – Susliks 2014-10-29 16:17:52

+0

如果您發佈整個程序,我可以幫助您更好。或者至少,名爲memory_read(int a)的方法; – 2014-10-29 16:59:27

相關問題