gpt4 book ai didi

c++ - Make++o++ 提示具有用户定义的前置和后置增量运算符的类型

转载 作者:行者123 更新时间:2023-12-04 00:50:43 24 4
gpt4 key购买 nike

我正在寻找一种方法来防止 ++x++ 为具有用户定义的前缀和后缀增量运算符的类型工作。

对于内置类型,后缀运算符的结果类型不是左值而是纯右值表达式,编译器会很好地提示。

我能想到的最简单的事情是为后缀增量运算符返回 const:

struct S {
int i_;
S& operator++() {
++i_;
return *this;
}
S /*const*/ operator++(int) {
S result(*this);
++(*this);
return result;
}
};
int main() {
S s2{0};
++s2++;
}

Here's a godbolt .

这种方法有缺陷吗?

编辑:

多亏了答案,我找到了更多信息here , here当然还有 cppreference .

最佳答案

您可能需要 S& operator++() &S operator++(int) &。您在末尾缺少 & 使运算符仅适用于左值。

关于c++ - Make++o++ 提示具有用户定义的前置和后置增量运算符的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66789087/

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