我正在制作一个项目,需要多个课程,其中一些是继承的!! 所以我在定义之前在主类中使用一个继承的类! 请帮助我如何使用原型声明继承class.thanks !!
示例:
class A
{
/*data*/
};
class B:public A
{public:
void func()
{
C obj;
}
};
class C:public B
{
};`
答案 0 :(得分:0)
只有函数有原型。你可以用课做的是转发声明它。
class MyFutureClass;
struct MyFutureStruct;
这是一个不完整的课程。不,C ++中的结构与类相同,只是默认情况下它们具有公共访问权限,类具有私有性。要使它们完整,您应该在代码中的任何位置提供定义。
不完整的类只是一种可能的不完整类型。以下类型是不完整类型:
现在您可以使用不完整的课程吗?
您可以做些什么?
需要什么?
让我们看一下,这是避免循环使用标题的绝对无用的例子。
[class_a.h]
class B;
class A
{
B* p;
public:
A ( B& value );
};
[class_b.h]
#include "class_a.h"
class B : public A // we need complete A to inherit it
{
int a;
public:
B ( const B& );
};
[class_a.cpp]
#include "class_b.h"
// to define this constructor we need complete A, but header with complete
// definition is already included within class_b.h header
A::A ( B& val) : p( new B(val)) // we created copy of B
{
}
因此,要定义类A我们需要类B,但是类B是类A的子类,因此它需要完整定义A. Conundrum?不。感谢前向声明,我们可以在不定义B的情况下定义A类。
(PS。如果有人审查了代码并发现了一些不可能的东西,我明确允许修复它是因为......我已经睡着了)