C++;-什么是;不允许使用不完整的类型“;错误的意思是,我如何修复它? 虽然我看到了很多关于C++中“不完全类型不允许”错误的问题,但是当它这样对我尖叫时,我仍然无法理解编译器试图告诉我什么。我已经能够拼凑出它与#include-ing头文件有关,但是我不知道什么是“不完整类型”以及为什么它是“不允许的”。我在尝试从SDL\u窗口继承时出错,如下所示: #pragma once #include "SDL.h" class Window : public SDL_Window { public: Window(); ~Window(); };

C++;-什么是;不允许使用不完整的类型“;错误的意思是,我如何修复它? 虽然我看到了很多关于C++中“不完全类型不允许”错误的问题,但是当它这样对我尖叫时,我仍然无法理解编译器试图告诉我什么。我已经能够拼凑出它与#include-ing头文件有关,但是我不知道什么是“不完整类型”以及为什么它是“不允许的”。我在尝试从SDL\u窗口继承时出错,如下所示: #pragma once #include "SDL.h" class Window : public SDL_Window { public: Window(); ~Window(); };,c++,sdl,incomplete-type,C++,Sdl,Incomplete Type,有人能给我解释一下这个错误是什么意思,如何(通常)修复它,在我的情况下,我应该怎么做才能阻止它发生 C++“不允许不完整类型”错误是什么意思 不完整类型表示类型SDL\u窗口没有定义 该错误表示该类型不完整,并且该上下文中不允许使用不完整的类型。在这种特殊情况下:不完整的类型不能用作基类 我该怎么做才能阻止它发生 不要试图将SDL_Window用作基类-它不打算以这种方式使用 SDL_窗口用作不透明指针。某些SDL函数可能会返回一个SDL\U窗口*。您可以存储它,并将其作为参数发送给其他SDL函

有人能给我解释一下这个错误是什么意思,如何(通常)修复它,在我的情况下,我应该怎么做才能阻止它发生

C++“不允许不完整类型”错误是什么意思

不完整类型表示类型
SDL\u窗口
没有定义

该错误表示该类型不完整,并且该上下文中不允许使用不完整的类型。在这种特殊情况下:不完整的类型不能用作基类

我该怎么做才能阻止它发生

不要试图将
SDL_Window
用作基类-它不打算以这种方式使用


SDL_窗口
用作不透明指针。某些SDL函数可能会返回一个
SDL\U窗口*
。您可以存储它,并将其作为参数发送给其他SDL函数。这就是它的全部用途。

\include
->
\include“SDL.h”
谢谢你的建议。我更改了它,但它没有修复错误。也许您应该尝试显示完整的错误消息,而不是仅仅解释它所说的内容。而且提供一个窗口也不会有什么坏处。@George
SDL_Window
故意不完整。它的定义对库的使用者不可见,只能通过向SDL函数传递/接收指向它的指针来与它交互。这是许多C库使用的常用技术。因为,可能只有头文件中的
SDL_Window
的反声明才完成,而定义是在其他地方完成的,您无法访问。好的,谢谢。我已经习惯了Java,在Java中几乎每个程序都有一个扩展JFrame的类。但是,我认为C++中的语法类型是不可行的。这种类型的语法在C++中是可行的(例如在Qt中,你可以将QGrand子类);是SDL做出了设计决定,不允许它用于他们的API。