2010-03-30 105 views
3

我有一个类A,它在其构造函数中引用了B。我可以将子类传递给父类的引用吗?

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

而且我有一个类SUBB这是一个子类B的:

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

在我的代码,我创建了一个SUBB,并把它传递给答:

SubB subB; 
    A a(subB); 

但我得到这个编译错误:

错误:'B'是'SubB'的不可访问的基地

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

谢谢。

+3

“B”是“SubB”的唯一基础吗? (即你是否意外地使':public X,Y'错误?) – Amber 2010-03-30 02:17:33

+0

你正在使用哪种编译器?这些都在相同的C++文件? – Uri 2010-03-30 02:17:40

+0

根据您提供的信息,代码看起来很好。我认为还有更多。请分享完整的示例代码。 – 2010-03-30 02:20:00

回答

1

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

+0

谢谢。这是我的问题的根源。我现在解决了。 – michael 2010-03-30 02:41:16

0

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

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

相关问题