Search code examples
c++inheritanceusingprivate-memberspublic-fields

a way in c++ to hide a specific function


i have an inheritance struct A : public B, i want to hide individual functions from B, is this possible?

i know the opposite is possible using using BMethod in the A declaration.

cheers


Solution

  • If you want to selectively hide functions from B it does not make much sense to use public inheritance in the first place.
    Use private inheritance & selectively bring methods from B into the scope of A:

    struct B{
       void method1(){};
       void method2(){};
    };
    struct A : private B{
       using B::method1;
    };
    
    A a;
    a.method1();
    a.method2(); //error method2 is not accesible