如何将const参数从成员函数传递到另一个成员函数?

时间:2016-10-16 20:11:16

标签: c++

我有一个班级

 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; 

但它也不起作用。

2 个答案:

答案 0 :(得分:2)

在您显示的示例中,function1()const方法。 const方法只能调用其他const方法。 function2()不是const方法。

这与每种方法的实际参数无关。

答案 1 :(得分:1)

const这个只能调用const这个,非cont这个可以调用这两个。 在你的代码中你用const来调用非const这个:函数1这是const而函数2是非const,因此这是错误。

  • 功能2可以调用功能。

更正您的示例:

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:
 ....
 };