【发布时间】:2013-01-11 20:59:16
【问题描述】:
我想知道是否有人可以向我解释我如何能够实现类似的东西:
namespace advanced_cpp_oop
{
class A
{
B b;
};
class B : public A
{
};
}
int main()
{
}
基类的实例在哪里可以包含派生类的实例?上面的代码编译时会产生如下错误:
g++ advanced_cpp_oop.cpp
advanced_cpp_oop.cpp:8:5: error: ‘B’ does not name a type
可以编译的(几乎)等效的 Java 代码是:
public class AdvancedCppOop
{
public static void main(String[] args)
{
A a;
}
}
class A
{
B b;
}
class B extends A
{
}
谢谢
【问题讨论】:
-
真的,如果你仔细想想,这有点傻。
A将具有一定的大小(包括嵌入的B),例如N字节。但是B至少会一样大,因为它包含A所做的所有字段,所以A需要更大才能容纳,这意味着B需要更大,.... . 另外,A包含的B必须包含一个A作为它的基础对象,并且A必须包含一个B,它必须包含一个A, ....跨度>
标签: c++ oop class inheritance