Pergunta

Why doesn't the following code work?

class A
{
   static void Method() { std::cout << "method called."; }
};

class B : public A
{
   // Has a bunch of stuff but not "Method"
};

int main()
{
   B::Method();
}

I know I could make it work by adding the following to B, but it would be nice if this weren't necessary, especially if there were several classes that derived from A.

   static void Method() { A::Method(); }
Foi útil?

Solução

Members of classes declared with the class key are private by default. To make them public, you have to say:

class A
{
    public:
//  ^^^^^^^
        static void Method() { cout << "method called."; }
};
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top