gpt4 book ai didi

c++ - 可修改的左值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:19:02 28 4
gpt4 key购买 nike

我正在研究一个小型直方图类,但有些事情困扰着我。这是代码:

class cHistogram{
public:
cHistogram();
cHistogram(int x);
friend ostream& operator<<(ostream& ost, cHistogram& obj);
int operator()(const unsigned int n){return niz[n];};
int operator [](const unsigned int n){return niz[n]++;};

private:
int niz[100];
int total;


};

int main() {
cHistogram h(100);
while(true){
unsigned int n;
std::cin >> n;
if(0 == n) break;
h[n]++;
}
std::cout << h;
}

问题是在尝试编译时,它告诉我 h[n] 必须是可修改的左值。我不太明白我应该在这里做什么......欢迎任何意见! :)

最佳答案

您的 operator[] 返回一个 int,它不是可修改的左值(大致上 int 不能放在赋值的左侧)。

你的operator[]也定义的很奇怪,你为什么要写自增的operator[]?以下是您通常的写法

int& operator [](const unsigned int n){return niz[n];}

现在您的代码应该可以工作了,因为您正在返回一个可以递增的引用。

关于c++ - 可修改的左值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18800470/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com