类中的类-不完整类型是不允许的
Class within class - incomplete type is not allowed
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,我认为它会工作,因为类已经创建(即使它的私有成员还没有创建)。
你的设计是错误的。你试图定义一个类,在它的定义中你试图使用它本身;这是一个逻辑悖论。
从我可以从你的代码中理解,你试图创建一个名为Publicatie
的类,它代表一个出版物(或一个帖子),它有另外两个变体,名为Carte
和Revista
。如果是这样的话,为什么Publicatie
需要有两个类型为Carte
和Revista
的私有成员?也许你可以去掉这两个元素。
或者您可以将它们的一些共享成员(例如titlu
, tiraj
和…)移动到另一个抽象类中,然后定义Publicatie
, Carte
和Revista
,以便所有这些成员都继承同一父类。
只能从完整类型的类继承。但是,您不需要在环境类定义中使用嵌套类定义。相反,您可以这样做:
struct Foo
{
struct Bar;
Bar * p;
int get();
};
struct Foo::Bar : Foo
{
int zip() { return 4; }
};
int Foo::get() { return p->zip(); }
相关文章:
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- C++从外部类继承的嵌套类;不允许使用不完整的类型
- E0322:不允许使用抽象类类型 " " 的对象
- 为什么C++不允许两个同名的函数/类模板,区别仅在于非类型模板参数(整型)的类型?
- 不允许将SDL_Cursor与unique_ptr:error不完整类型一起使用
- HTTP POST 请求不允许我定义上下文类型
- 内建数组出现不允许的类型不完整错误
- 为什么 std::array 的演绎指南不允许不同的类型?
- 为什么标准不允许通过引用捕获不完整的异常类型?
- 数组错误(不允许类型不完整)
- 为什么函数返回类型中不允许参数推导?
- std::function 中不允许引用返回类型吗?
- 类中不允许使用不完整的类型,但在类模板中允许使用不完整的类型
- 为什么协程不允许使用占位符返回类型?
- 错误消息:不允许抽象类类型 "X" 的对象:纯虚拟"Y"没有覆盖器
- 错误:不允许使用抽象类类型的对象
- 奇怪的不完整类型不允许错误
- 不完整的类型不允许错误
- c++不完全类型不允许在类内部使用
- 不完全类型不允许出现错误和元组