繁体   English   中英

C ++使用short索引一个整数数组

[英]C++ Indexing an array of ints using a 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];

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

根据直觉和注释提示,您有一个局部变量best_pbest_p是一个unsigned int ),它遮蔽了类的成员。 因此, best_p[side_pos]将使用局部变量,而不是数据成员。

如果要让编译器捕获阴影,则-Wshadow选项应该执行该操作。 要做的最好的事情是重命名。 制定数据成员名称的约定( m_<name>是常见的约定)还可以帮助防止意外阴影和思考将某项重命名为什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM