错误:将"xxx"作为"this"参数传递会丢弃限定符
error: passing 'xxx' as 'this' argument discards qualifiers
谁能告诉我为什么下面的代码:
#include <iostream>
using namespace std;
class Test {
int a, b, c;
public:
Test() : a(1), b(2), c(3) {}
const void print() {cout << a << b << c;}
int sum() {return (a+b+c);}
};
const Test& f(const Test& test) {
test.print();
// cout << test.sum();
return test;
}
main() {
Test x;
cout << "2: ";
y = f(x);
cout << endl;
}
给出编译错误
"错误:将'const Test'作为'this'参数传递时会丢弃限定符"
?
我的print()
方法是const
,这是我所理解的所有必要的。对我来说,f()
中的(注释掉的)sum()
方法应该给出一个错误,而不是print()
方法。如果有人能指出我误解的地方,那就太好了。
您正在const对象上调用非const方法print()
。const
方法不能修改它所调用的对象,这是唯一允许在const
对象上调用的成员方法(以保持const-ness)。const方法在方法参数列表之后用const
表示:
void print() const {cout << a << b << c;}
是的,const void
充其量是没用的,只有void
是一样的。
const void print()
这没有意义,你的意思是:
void print() const
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 为什么使用 "this" 指针调用派生成员函数?
- C++错误:"error: int aaa::bbb is protected within this context"
- 我可以将调用类的"this"传递给 lambda 函数吗?
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 关于C++中具有多重继承"this"指针的说明
- 在noexcept 规范中是否允许使用"this"?
- 如何修复"error: ‘_1’ was not declared in this scope"?
- C++调用具有 *this 属性的单个帮助程序函数
- Doees the 'this' 指针参与虚函数的多态行为
- 在 c++ 中正确定义"this"关键字?
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- QObject::连接无法将信号连接到*this*对象的插槽
- 析构函数中的"delete this"
- 为什么成员函数内的"this"指针为空?
- "passing const XXX as this disregards qualifiers"解释 ?
- 错误:将'xxx'作为'xxx'丢弃限定符的参数传递'this' [-允许]
- 错误:将"xxx"作为"this"参数传递会丢弃限定符
- C++错误:将 xxx 作为 xxx 的参数传递'this'丢弃限定符