C++ - "不允许不完整类型"错误是什么意思,我该如何解决?

tob*_*hhh 1 c++ sdl incomplete-type

虽然我已经看到许多问题引用了C++中的"不完全类型不允许"错误,但我仍然无法弄清楚当编译器像这样尖叫我时编译器试图告诉我的内容.我已经能够将它与#include-ing头文件有关,但我对"不完整类型"是什么以及为什么它"不允许"一无所知.尝试继承时,我收到错误SDL_Window:

#pragma once
#include "SDL.h"

class Window : public SDL_Window
{
public:
  Window();
  ~Window();
};
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释错误的含义,如何(一般)修复它,在我的情况下,我应该做些什么来阻止它发生?

eer*_*ika 7

C++ - "不允许不完整类型"错误意味着什么

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

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

我应该做些什么来阻止它发生?

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

SDL_Window旨在用作不透明指针.某些SDL功能可能会返回给您SDL_Window*.您可以存储它,并将其作为参数发送到其他SDL函数.这就是它的全部用途.

  • 这种语法在C++中是可行的(例如在Qt中你可以子类化QFrame); 它的SDL使得设计决策不允许它的API. (2认同)