好吧,我在15分鐘前提出了一個問題並關閉了它,因爲當我在main()
中嘗試了一個簡單的測試時,它工作正常。但是,它在實際代碼中不起作用:C++使用短索引整數整數數組
背景,我有一個無符號整數的數組,我無法通過無符號短索引器訪問。如果我在棧上聲明瞭一個數組,它可以工作,但它不適用於我的數組數據成員。
這裏是數組聲明:
typedef unsigned int uint;
class OB{
public:
OB();
void x(unsigned short side_pos);
private:
uint best_p[2];
};
這裏的地方我得到的編譯器錯誤代碼:
void OB::x(unsigned short side_pos){
unsigned int best_price = best_p[side_pos];
}
如果我做的:
void OB::x(unsigned short side_pos){
unsigned short something_else = 1;
unsigned int best_price = best_p[something_else];
}
我也得到了編譯器錯誤,即:
OB.cpp: In member function ‘void OB::x(short unsigned int)’:
OB.cpp:62:56: error: invalid types ‘unsigned int[short unsigned int]’ for array subscript
unsigned int best_price = best_p[side_pos];
你確定這是* only *'best_p'並且沒有,比如一個局部變量嗎? – chris
@chris把這作爲答案(你是對的,在我的編譯器錯誤之一,我確實有一個多重聲明,但另一個我沒有,並把「this-> my_array []」固定它)。 – user997112
更好:使用不同的名稱。有時候,陰影可能很有用,但通常它會導致編譯錯誤。 –