我很清楚const pointer to pointer problem,我想我知道發生了什麼,但是我錯了。我想實現這一點:在C++中使用Consts的數組指針和引用
int* var[4];
const int* const (&refArray)[4] = var; //compile error
是的,我想保留,而不是轉換爲指針數組,是的,我確實在我的代碼遇到了這個問題。於是我就在調查什麼我能做和不能做的,用不了多久我意識到我不知道這是怎麼回事:
int* var[4];
const int* const * ptr = var; //allowed
const int* const * (&refPtr_indirect) = ptr; //allowed
const int* const * (&refPtr) = var; //error
const int* const * const (&constRefPtr) = var; //allowed
int* const (&refArray)[4] = var; //allowed
const int* const (&refArray)[4] = var; //error
我可以理解第4名,但最後兩使得完全沒有意義的我。我確實看到第三個版本可能工作,我可以放棄reference
,但我真的希望保留數組類型。
任何幫助表示讚賞,但希望它可以包括背後的推理爲什麼規則是這樣。
任何好的理由,不只是用'的std :: array'或'提振:: array'? –
無論如何,你應該從一個指向數組'&var'的指針進行初始化。這也行不通,但可能更容易找出原因。 – juanchopanza