非常簡單:我想指定一個函數不會改變它的指針參數。如何?又一個:C++ - 從'const type *'無效轉換爲'type *'
class A {
private:
int *p;
public:
void foo (const int *q) {
p = q;
}
};
A a;
int b = 3;
int *c = &b;
a.foo(c);
仍然沒有工作,感謝您的幫助!
非常簡單:我想指定一個函數不會改變它的指針參數。如何?又一個:C++ - 從'const type *'無效轉換爲'type *'
class A {
private:
int *p;
public:
void foo (const int *q) {
p = q;
}
};
A a;
int b = 3;
int *c = &b;
a.foo(c);
仍然沒有工作,感謝您的幫助!
好的,你已經澄清,你沒有打算增加const到指針,而是指向(而這當然可以安全地刪除時複製指針)。錯誤消息很好地表明您在該目標中失敗。
的類型做的是:
int* const
記住,const
直接適用於左側(除非有什麼也沒有,在這種情況下,直接適用於右側)。
您正在傳遞'foo()'常量指針,這意味着您告訴編譯器您不希望任何人更改指針所指向的數據。因此,將const指針轉換爲非const指針是沒有意義的。然而,如果你真的想這樣做'只是爲了好玩',那麼你可以通過'memcpy'來解決這個問題。
'memcpy'會是一個奇怪的方法。 'const_cast'肯定 –
你正在接受'const int *'參數並試圖將它保存在一個非''constst'變量中。錯誤信息正試圖向您解釋,請花點時間仔細閱讀。 – tadman
是的,你說函數*本身*不會修改'q'指向的東西。但是,然後將它保存在一個非常量指針中,以便其他*成員函數可以修改數據。 –
'A = a;'這是什麼?你對細節的關注度很低。 –