2010-04-20 34 views
8

我有一個函數,需要const some_type**作爲參數(some_type是一個結構,並且該函數需要一個指向這種類型的數組的指針)。我聲明瞭some_type*類型的局部變量,並初始化它。然後,我調用該函數爲f(&some_array),編譯器(GCC)說:'從some_type **無效轉換爲const some_type **'

error: invalid conversion from ‘some_type**’ to ‘const some_type**’ 

這裏有什麼問題嗎?爲什麼我不能將一個變量轉換爲const?

回答

1

你可能需要指定一些更多的上下文,例如是參數傳入或傳出(或兩者?)函數?

嘗試使您的變量常量,以及:

some_type const *some_array = ....; 

該讀作 「some_array是一個指向一個const some_type」。代碼無法修改指向的內容。所以你必須在將它傳遞給函數之前聲明你的變量const。

(編輯...)

+1

「否」 :)(http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.17) – Constantin 2010-04-20 08:55:30

+0

呵呵。即使它沒有解決關於「爲什麼」的問題,這被標記爲公認的答案? =( – jamesdlin 2010-04-20 08:59:58

1

您有幾種選擇來解決什麼jamesdlin在他的回答中概述。

您可以使用中間變量。

some_type const* const_some_array = some_array; 
f(&const_some_array); 

您可以更改f的參數。

void f(some_type const* const* some_array); 
相關問題