C++ - "Incomplete type not allowed" 错误是什么意思,我该如何解决?

C++ - What does "Incomplete type not allowed" error mean, and how can I fix it?

虽然我已经看到很多关于 C++ 中的 "Incomplete type not allowed" 错误的问题,但我仍然无法弄清楚编译器在像这样对我尖叫时试图告诉我什么。我已经能够拼凑出它与 #include-ing 头文件有关,但我对 "incomplete type" 是什么以及为什么它是 "not allowed" 一无所知。尝试从 SDL_Window 继承时出现错误:

#pragma once
#include "SDL.h"

class Window : public SDL_Window
{
public:
  Window();
  ~Window();
};

有人可以向我解释错误的含义,如何(通常)修复它,并且就我而言,我应该怎么做才能阻止它发生?

C++ - What does “Incomplete type not allowed” error mean

不完整类型意味着没有类型SDL_Window的定义。

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

what I should do to stop it from happening?

不要尝试使用 SDL_Window 作为基数 class - 它不应该以这种方式使用。

SDL_Window 旨在用作不透明指针。有些 SDL 函数可能 return 你 SDL_Window*。您可以存储它,并将其作为参数发送给其他 SDL 函数。这就是它的用途。