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

标签 c++ sdl incomplete-type

虽然我已经看到很多问题提到 C++ 中的“Incomplete type not allowed”错误,但我仍然无法弄清楚编译器在像这样对我尖叫时试图告诉我什么。我已经能够拼凑出它与 #include-ing 头文件有关,但我对什么是“不完整类型”以及为什么“不允许”一无所知.尝试从 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 类型没有定义。

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

what I should do to stop it from happening?

不要尝试将 SDL_Window 用作基类 - 它不应以这种方式使用。

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

关于C++ - "Incomplete type not allowed"错误是什么意思,我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49354611/

相关文章:

c++ - SDL 中的每像素 2D 圆形碰撞检测

C++ 如何在不显式转换的情况下降级函数调用中的类实例?

c - 不完整数组类型的 p[0] 和 *p 等价

c++ - 已知大小时向 vector 添加元素的基准测试

c++ - 什么时候调用成员数据构造函数?

cmake - 如何安装 SDL 开发库以便 CMake 可以找到它

c++ - 为什么我可以将不完整类型的参数传递给函数?

c++ - 集合迭代器中的不完整类型

c++ - "Clang with Microsoft CodeGen"和 "LLVM-vs2014"有什么区别?

c++ - Concepts lite是否会改变CRTP实现静态多态的需求?