如何创建对数组成员的引用
How do create a reference to a member of an array
如何
引用类中数组的成员?
像这样:
class ASD{
int bb[4];
int& up = bb[0] // <- error need to const
int& down= bb[1] // <- samething
int& right= bb[2] // <- samething
int& left= bb[3] // <- samething
};
这样我就可以这样做:
int main(){
ASD asd();
asd.bb[1] = 5;
// or
for(int i = 0; i < 4 ; i++){
asd.bb[i] =i;
}
// and still be able to do this:
asd.left = 50;
//which will be equal to asd.bb[3] = 50
return 0;
}
还有一件事。你知道我怎么能反过来吗:
像这样:
class ASD{
int up;
int down;
int right;
in& left;
int*& bb = &up; // <- error
};
所以我可以这样做:
ASD asd;
asd.bb[1] = 20;// which is equal to asd.down = 20
您的代码按预期工作。井。。。进行与您的主要问题无关的小调整:
- 公开成员
- 添加
;
- 由于大多数解析
ASD asd();
被解释为函数。使用ASD asd;
或更好的ASD asd{};
:
class ASD
{
public:
int bb[4];
int& up = bb[0];
int& down= bb[1];
int& right= bb[2];
int& left= bb[3];
};
int main()
{
ASD asd{};
asd.bb[1] = 5;
for(int i = 0; i < 4 ; i++){
asd.bb[i] =i;
}
asd.left = 50;
return 0;
}
另一个不允许您使用此代码的问题是,您使用的是旧的C++
标准进行编译。至少使用 c++11
.它支持类内初始化,这就是您正在执行的操作。
如果出于某种原因您仍然想使用 C++98,那么您需要初始化 c-tor 初始化列表中的成员引用:
class ASD
{
public:
int bb[4];
int& up = bb[0];
int& down;
int& right;
int& left;
ASD()
: up(bb[0]),
down(bb[1]),
right(bb[2]),
left(bb[3])
{}
};
int main()
{
ASD asd;
asd.bb[1] = 5;
for(int i = 0; i < 4 ; i++){
asd.bb[i] =i;
}
asd.left = 50;
}
但我强烈建议使用较新的(好吧,它不再是那么新(标准。
相关文章:
- 为什么我无法访问指向数组中成员函数的指针?
- 如何将结构/联合数组的成员传递到函数中
- 使用带有参数包的数组的成员数组初始化类
- 有没有办法给数组的成员指定不同的名称?
- 使用包含结构的数组的成员函数
- C++:释放动态数组(结构成员)和指向此结构的指针的方法
- C 用数组作为成员创建对象
- 用另一个 constexpr 数组对成员数组进行大括号初始化
- 来自数组的成员和比特菲尔德的结构
- 如何创建指向数组类成员的指针?
- 将数组的成员设置为零
- "Empty"数组\向量成员 C++
- 功能指针数组(包括成员功能)投掷模板专业化错误
- 另一个结构内部的结构数组的成员变量没有通过引用传递
- 正确转换 2D 数组的成员变量
- 常量数组类成员初始化
- 为具有对象或对象数组作为成员的类运行不同的代码
- C++ 如何指向数组的成员
- 将包含数组数据成员的结构保存到文件
- 数组类成员初始化(C++)