【发布时间】:2013-03-08 17:11:08
【问题描述】:
现在,我必须写
st[1];
st = 5;
我必须在我的代码中进行哪些更改才能做到这一点:
st[1] = 5;
#include <iostream>
using namespace std;
class A
{
public:
A(){this->z = 0;}
void operator = (int t) { this->x[this->z] = t+10; }
int& operator [] (int t) { this->z=t; return this->x[t]; }
private:
int x[2];
int z;
};
void main()
{
A st;
st[0]=9;
cout<<st[0];
system("pause");
}
UPD:现在我看到的是 9 而不是 19。
【问题讨论】:
-
通过引用返回您的 int 以供 operator[]
-
从
operator[]返回一个引用。请注意,这会破坏以这种方式完全暴露的成员所持有的值的封装。 -
我不太确定你认为
st[1];做了什么。如果这是您想要的,它肯定不会为下一个独立语句选择数组元素 1。st[1]; st=5;和st[1] = 5是两个完全不同的东西。 -
我需要使用 A 类,就像大小 = 2 的数组一样。这个数组的每个元素都是这个数字和一些 const 的总和 st[0]=5
-
也许是这样,但我的意思是,
st[1];如您上面的代码 sn-p 根本什么都不做(无论您是实现operator[]按值返回还是正确返回- 参考安迪徘徊的回答)。这是一个被忽略的值(或引用),就像(void)0;。它根本没有做任何事情。您确实必须在分配中一个声明才能实现您的意图。
标签: c++ oop syntax-error