【问题标题】:Why is a private member function of a subclass callable from the parent class?为什么子类的私有成员函数可以从父类调用?
【发布时间】:2014-12-16 05:32:46
【问题描述】:

我希望他下面的代码会出错,但Compiles ok

class B;

template<typename T>
class A
{
    private: 
    A()
    {
       T b;
       b.print();
    }

    void print()
    {

    }
 };

 class B: public A<B>
 {

 };

A如何访问私有成员,B的构造函数A()print()

【问题讨论】:

  • 你看到你的 'Compiles ok' 链接了吗?
  • 因为你还没有实例化模板类。在您强制 A 为具有特定版本的 T 的 A 生成代码之前,您无法在 A 中生成编译器错误。
  • 你必须看到Compiles ok链接。它根本不编译。
  • 将研究标准。链接编辑创建B实例后报错,不编译成功

标签: c++ inheritance access-modifiers


【解决方案1】:

尝试新建一个B类实例,会编译出错。

Bb;

【讨论】:

    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 2013-03-25
    • 2013-04-11
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多