我需要定义一个类Abc,类中有一个数组v[100],使得Abc[x]返回x*10,如x=Abc[3];x会等于30。还要使得Abc[x]=y可以修改v[x]为y,如Abc[10]=5;v[10]会变为5.chatgpt告诉我```cpp
#include <iostream>
class Abc {
public:
int operator[](int x) const { return x*10; } // 返回第 x 个元素的引用,可用于修改元素的值
int& operator[](int x){ return v[x]; } // 返回第 x 个元素的引用
private:
int v[100];
};
int main() {
Abc a;
a[3] = 42; // 设置第 3 个元素的值为 42
int x = a[3]; // 获取第 3 个元素的值(将其乘以 10,因为我们定义了 Abc[x] 返回 x * 10)
std::cout << x << std::endl; // 输出 30
return 0;
}
但这样实际输出42.如果写```cpp
#include <iostream>
class Abc {
public:
int operator[](int x) const { return x*10; } // 返回第 x 个元素的引用,可用于修改元素的值
private:
int v[100];
};
int main() {
Abc a;
int x = a[3]; // 获取第 3 个元素的值(将其乘以 10,因为我们定义了 Abc[x] 返回 x * 10)
std::cout << x << std::endl; // 输出 30
return 0;
}
能输出30,但不能赋值。请问应该如何解决???