为什么派生类不能访问基类静态方法?

时间:2014-04-07 22:45:16

标签: c++ inheritance static-methods

为什么the following code不起作用?

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();
}

我知道我可以通过在B中添加以下内容来使其工作,但如果不需要这样做会很好,特别是如果有几个派生自A的类。

   static void Method() { A::Method(); }

1 个答案:

答案 0 :(得分:4)

默认情况下,使用class键声明的类的成员是私有的。要公开它们,你必须说:

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