求助万能的谷民
  • 板块灌水区
  • 楼主smartao
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/4/19 21:53
  • 上次更新2023/10/23 18:01:15
查看原帖
求助万能的谷民
408910
smartao楼主2023/4/19 21:53

我需要定义一个类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,但不能赋值。请问应该如何解决???

2023/4/19 21:53
加载中...