下面的代碼在'func'(& pobj);'在函數main()中不能將'X * *'轉換爲'const X * *'並且在參數1(想要'const X * *',得到'X * *')中輸入不匹配。 「即使它是傳遞指針參數的正確方法。並且在評論這一特定行,即'func(& pobj);'並取消註釋上面的兩行,它聲明瞭所需類型的新的'const'指針'pp'(在func的參數中),但仍然在聲明和分配'pp'的行上拋出一個錯誤,說'不能轉換'X * * '到main()函數中的'const X * *'。傳遞指向C++中另一個指針的'const'指針
using X = int;
void func(const X **);
int main() {
X *pobj = new X(58);
// const X **pp = &pobj; // ERROR
// func(pp);
func(&pobj); // ERROR
}
我相信這是傳遞常量指針作爲參數的正確方法,我只是不明白爲什麼程序無法編譯。任何人都可以指出上述代碼中的錯誤,並且如果我錯了,建議我使用正確的邏輯/語法?提前致謝。
UPDATE: 此問題被標記爲重複,但它沒有解決手頭問題的答案。因此,如果Stack Overflow社區能夠幫助我解決我的問題,我會很喜歡它。謝謝。
這解決了模塊調用的問題,但是這並不能讓我們改變指針'pobj'指向的值對於我的程序來說是必不可少的(這只是其中的一小部分,它有錯誤)。你有任何想法來解決這個問題/錯誤?感謝您的回覆。 – hecate
@hecate:聽起來像你沒有正確定義你的模塊API。如果你想修改一個東西,你需要指向一個可修改的東西。也許檢查其他答案。 –
請注意,您提供的第二個解決方案保留在原始指針不起作用.. :-( – hecate