C ++使用short对一组int进行索引

时间:2014-02-26 16:53:38

标签: c++ arrays indexing int short

好的家伙我在15分钟前问了一个问题并关闭了它,因为当我在main()尝试一个简单的测试时,它起作用了。但是,它在实际代码中不起作用:

后台,我有一组无符号整数,我无法通过无符号短索引器访问。如果我在堆栈上声明一个数组它可以工作,但它对我的数组数据成员不起作用。

这是数组声明:

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];

2 个答案:

答案 0 :(得分:0)

它在我的电脑上编译。似乎获得该错误的方法是使用变量而不是数组。检查属性的名称。

答案 1 :(得分:0)

根据直觉和评论提示,你有一个局部变量best_p(看起来是unsigned int),它会影响你班级的成员。因此,best_p[side_pos]将使用局部变量,而不是数据成员。

如果您希望编译器捕获阴影,-Wshadow选项应该执行此操作。它做的最好的事情就是重命名。拥有数据成员名称的约定(m_<name>是常见的)也可以帮助防止意外阴影和考虑重命名的内容。