class Publicatie{
public:
class Carte : public Publicatie{
private:
char* autor;
};
class Revista : public Publicatie{
private:
char* frecventa_aparitie;
int numar;
};
private:
int cota;
char* titlu;
char* editura;
int anul_aparitiei;
int tiraj;
Carte* c;
Revista* r;
public:
//some methods...
}
这是代码,我在Publicatie类中声明了Carte和Revista类,我需要私人成员Carte和Publicatie。我真的不知道如何使用这些类进行继承设计。我在继承的标题中得到错误:public Publicatie,我认为它会起作用,因为已经创建了类(即使它的私有成员还没有创建)。
答案 0 :(得分:1)
你的设计错了。你试图定义一个类,并且在它的定义中你试图从它自己开始使用;这是一个逻辑悖论
从我可以从您的代码中理解,您正在尝试创建一个名为Publicatie
的类来表示一个发布(或一个帖子),它还有另外两个变体,名为Carte
和{{1} }。如果是这种情况,为什么Revista
需要有两个类型为Publicatie
和Carte
的私有成员?也许你可以从中删除这两个成员
或者你可以将他们的一些共享成员(例如Revista
,titlu
和...)移动到另一个抽象的类,然后定义tiraj
,Publicatie
和Carte
使得所有这些都继承自同一个父类
希望这些工作。
答案 1 :(得分:0)
您只能从完整类型的类继承。但是,您不需要在环境类定义中包含嵌套类定义。相反,你可以这样做:
struct Foo
{
struct Bar;
Bar * p;
int get();
};
struct Foo::Bar : Foo
{
int zip() { return 4; }
};
int Foo::get() { return p->zip(); }