Вопрос

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(); }
Это было полезно?

Решение

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."; }
};
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top