0
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,我认为它会起作用,因为已经创建了类(即使它的私有成员尚未创建)。

4

2 回答 2

1

你的设计是错误的。您正在尝试定义一个类,并且在它的定义中您试图从其自身使用;这是一个逻辑悖论。
根据我从您的代码中可以理解的内容,您正在尝试创建一个名为的类,该类Publicatie代表一个出版物(或一篇文章),并且它还有另外两个变体,分别命名为CarteRevista. 如果是这种情况,为什么Publicatie需要有两个私有成员类型CarteRevista?也许您可以从中删除这两个成员。
或者,也许您可​​以将它们的一些共享成员(例如titlutiraj和...)移动到另一个抽象类,然后定义PublicatieCarte这样Revista它们都继承自同一个父类。
希望这些工作。

于 2013-03-27T23:08:56.900 回答
0

您只能从完整类型的类继承。但是,您不需要在环境类定义中包含嵌套类定义。相反,您可以这样做:

struct Foo
{
    struct Bar;

    Bar * p;

    int get();
};

struct Foo::Bar : Foo
{
    int zip() { return 4; }
};

int Foo::get() { return p->zip(); }
于 2013-03-27T22:58:40.973 回答