我有一个班级
class Foo : Bar {
public:
virtual bool function1(const Card &arg1) const{
function2(arg1);
}
virtual void function2(const Card &anotherArg) {
/* Do stuff with private member variables*/
}
private:
....
};
“卡片”是班级类型。我收到错误“成员变量函数'function2'不可行:'this'参数的类型为'const Simple',但函数未标记为const。”
我不太确定问题是什么。 function2将const作为参数之一,因此arg1是const的问题不应该是因为它不会被修改。另外,我试过这样做:
function2(arg1) const;
但它也不起作用。
答案 0 :(得分:2)
在您显示的示例中,function1()
是const
方法。 const
方法只能调用其他const
方法。 function2()
不是const
方法。
这与每种方法的实际参数无关。
答案 1 :(得分:1)
const这个只能调用const这个,非cont这个可以调用这两个。 在你的代码中你用const来调用非const这个:函数1这是const而函数2是非const,因此这是错误。
更正您的示例:
class Foo : Bar
{
public:
virtual bool function1(const Card &arg1) const
{
function2(&arg1);
}
virtual void function2(const Card &anotherArg)const
{
/* Do stuff with private member variables*/
}
private:
....
};