0

class MyClass {
public:
    void Bar()const
    {
        std::cout << "A::Bar() const\n";
    }

    void Bar()
    {
        std::cout << "A::func()\n";
        //call Bar()const in here
    }
};

I would like to know how i should call Bar()const member function in Bar() member function?

  • 1
    I'd guess you could do `const_cast(this)->Bar();` or use [std::add_const](https://en.cppreference.com/w/cpp/types/add_cv) or [std::as_const](https://en.cppreference.com/w/cpp/utility/as_const) or similar. – Jesper Juhl Jul 07 '20 at 12:36

1 Answers1

1

You need to cast the object to a const qualified version to call the const function. That would look like

void Bar()
{
    std::cout << "A::func()\n";
    const_cast<const MyClass&>(*this).Bar(); // calls const version
}
NathanOliver
  • 150,499
  • 26
  • 240
  • 331