我可以将子类传递给父类的引用吗?

时间:2010-03-30 02:12:29

标签: c++

我有一个A类,它在构造函数中引用了B。

 class A {
   public: 
     A(B& b); 
  }

我有一个SubB类,它是B的子类:

class SubB : public B {
    //omitted...
 }

在我的代码中,我创建了一个SubB并将其传递给A:

   SubB subB; 
   A a(subB);

但是我得到了这个编译错误:

错误:'B'是'SubB'无法访问的基础

我可以将SubB的引用传递给B吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

虽然缺少class B的声明,但发布的代码看起来是正确的。发布更完整的代码段 - 您的问题可能是错误放置包含文件和类声明。

答案 1 :(得分:0)

是的,将派生类实例传递给采用基类引用的函数是可以的。

您的示例为我编译,但看起来不应该产生该错误 - “无法访问的基类”通常是指通过受保护或私有继承而不是公共继承扩展的内容。你能发布一个更完整的例子吗?