类中的类 - 不允许使用不完整类型

时间:2013-03-27 22:55:41

标签: c++ oop

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

2 个答案:

答案 0 :(得分:1)

你的设计错了。你试图定义一个类,并且在它的定义中你试图从它自己开始使用;这是一个逻辑悖论 从我可以从您的代码中理解,您正在尝试创建一个名为Publicatie的类来表示一个发布(或一个帖子),它还有另外两个变体,名为Carte和{{1} }。如果是这种情况,为什么Revista需要有两个类型为PublicatieCarte的私有成员?也许你可以从中删除这两个成员 或者你可以将他们的一些共享成员(例如Revistatitlu和...)移动到另一个抽象的类,然后定义tirajPublicatieCarte使得所有这些都继承自同一个父类 希望这些工作。

答案 1 :(得分:0)

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

struct Foo
{
    struct Bar;

    Bar * p;

    int get();
};

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

int Foo::get() { return p->zip(); }