结构体前向声明错误:使用不同类型重新定义 Typedef

2023-12-08

我想在头文件中转发声明一个结构体。

struct GLFWvidmode;

class DesktopVideoMode {
private:
    const GLFWvidmode *videomode;
public:
    DesktopVideoMode(const GLFWvidmode *videomode);
...

在 cpp 文件中,我包含带有定义的外部标头...

#include "DesktopVideoMode.hpp"
#include <GLFW/glfw3.h>

...错误在哪里“使用不同类型的 Typedef 重新定义('struct GLFWvidmode' 与 'GLFWvidmode')“ 发生:

typedef struct
{
    /*! The width, in screen coordinates, of the video mode.
     */
    int width;
    /*! The height, in screen coordinates, of the video mode.
     */
    int height;
    /*! The bit depth of the red channel of the video mode.
     */
    int redBits;
    /*! The bit depth of the green channel of the video mode.
     */
    int greenBits;
    /*! The bit depth of the blue channel of the video mode.
     */
    int blueBits;
    /*! The refresh rate, in Hz, of the video mode.
     */
    int refreshRate;
} GLFWvidmode;

像这种情况我就不能转发申报吗?


GLFWvidmode不是一个结构,它是一个 typedef。您不能前向声明 typedef。无论谁选择使用未命名的结构,都做出了糟糕的设计决策。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

结构体前向声明错误:使用不同类型重新定义 Typedef 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • Python:如何引用实例名称? [复制]

    这个问题在这里已经有答案了 我使用以下代码收集实例 class Hand instances def init self Hand instances append self self value 5 def do something se
  • 在 EC2 实例上运行 jupyter 笔记本

    我在我的 AWS 账户上设置了一个 cloud 9 实例 我使用诗歌作为我的包管理器并安装了 jupyter 笔记本 当我运行命令时poetry run jupyter notebook它像平常一样运行 但是当我按下链接时 他们说无法访问该
  • 为什么不能在带有背景的锚元素上设置行高? [复制]

    这个问题在这里已经有答案了 我刚刚意识到带有背景的锚标记只会继承它们的行高 并且您只能通过将锚设置为显示来直接设置它 inline block 为什么是这样 http jsfiddle net moefinley 3H3y5 ul li a
  • Atmel SAM3X 双组切换不起作用

    我目前正在使用 Atmel SAM3X8 ARM 微控制器 该微控制器具有双组 2 x 256KB 闪存 我正在尝试实现固件更新功能 将新固件放入当前未使用的闪存库中 完成后使用闪存重新映射交换库以运行新固件 数据表指出 为此我需要设置 G
  • Roxygen2:记录重载 R 基函数时用作 S4 的 S3 类(cor)

    我有以下背景 我确实超载cor基本函数 以便我在我的包 R 文件中包含以下语句 export setGeneric cor 现在我想为我的对象创建一个特定的函数 名为stranger 这里为了简单起见 我只认为我的对象是一个 data ta
  • Selenium Webdriver:Firefox 与 PhantomJS 的 HTML 呈现方式不同

    我正在 Node JS 中使用 Selenium Webdriver 进行 Google 搜索 当我在本地计算机上将浏览器设置为 Firefox 时 Google 结果页面将按预期呈现 这和我作为人类进行谷歌搜索时看到的一样 现在 我尝试在
  • Microsoft Interop saveAs 命令失败

    我有一个简单的控制台应用程序 可以使用 Microsoft Office Interop API 将 Word 文档转换为 PDF 由于某种原因 这个文档总是失败 我已将其附加并删除了所有无关的内容 点击这里 由于某种原因 当您打开文档并在
  • 如何使用同一适配器在回收者视图上显示多个模型?

    我有两种不同类型的对象 例如 用户和学生 它们都具有不同的属性 用户 标题描述 学生 标题 描述 USN 有没有一种方法可以使用相同的适配器首先在回收器视图上显示两个用户 然后显示学生 即使它是两个适配器 我如何显示它 我不想要两个回收者视
  • 如何使用 Tycho 构建 zip 文件的功能

    我正在尝试使用 Tycho 导出 Eclipse 功能 替换 Eclipse 功能概述中的 导出向导 该向导提供了将导出目标作为 zip 文件的选项 有没有办法对第谷做同样的事情 为了构建包含该功能和该功能插件的 zip 文件 您需要添加一
  • 如何创建运行时timer.tick事件?

    我真的很烦恼如何在 VB net 上创建一个timer tick 事件 我的程序应该如何工作 实际上 我正在创建一个 FCFS 算法 我的目标是使用进度条显示甘特图 关于这一点 我希望我的计时器能够控制给定的进度条 当进度条达到最大值后 计
  • 如何配置Spring Security以允许在JSP页面中使用hasPermission?

    我正在尝试在我的 spring 项目的 jsp 页面中使用 hasPermission 我已经在我的控制器 服务类的方法中使用它 没有任何问题 阅读文章 http docs spring io spring security site do
  • 复制并粘贴格式,包括单元格颜色 VBA Excel

    wbTarget Sheets Sheet1 Range A1 W79 Value wb Sheets wsSource Name Range A1 W79 Value 我有这段代码 可以将 wb Sheets wsSource Name
  • Ping.SendAsync() 从 0.0.0.0 返回重播,如何获取 ping 地址?

    我对 C 中的 Ping SendAsync 函数有问题 我 ping 一些 IP 地址 但其中一些是错误的 我需要从列表中删除错误的地址 但是如何 因为 p PingCompleted事件参数 replay address is 0 0
  • XSLT 自定义排序

    XSLT 中是否可以按字母顺序排序 其中 5 项为 首选 即给定
  • Python内部如何存储日期时间?

    I found datetimemodule c这似乎是正确的文件 但我需要一些帮助 因为 C 不是我的强项 gt gt gt import datetime gt gt gt import sys gt gt gt d datetime
  • GitLab SSH 请求密码并忽略 SSH 密钥

    我在 CentOS 6 机器上安装了新的 gitlab omnibus 我已正确配置它并且可以访问 Web 界面 我已添加我的 SSH 密钥 但是当我尝试 Git 克隆新设置的存储库时 系统会要求我提供通过 SSH 的 Git 用户的密码
  • Android Studio 布局设计器用波斯语创建数字

    当我使用 Android Studio 布局设计器手动设计布局时 边距编号以波斯格式创建 并且设计器无法正常工作 自从我更新 Android Studio 以来 就一直发生这种情况
  • 创建和迭代链表时出现问题?

    当我运行下面的程序时 它打印 一 1 而不是我预期的 一 1 二 2 有人知道这是怎么回事吗 我正在尝试创建一个函数 该函数允许我创建尽可能多的链表 而不仅仅是声明全局头 struct Node int value char label 1
  • 获取组合键

    How can I get key combination of keys on keyboard E G Ctrl somekey Alt somekey with Java I use KeyEvent listener MouseEv
  • 结构体前向声明错误:使用不同类型重新定义 Typedef

    我想在头文件中转发声明一个结构体 struct GLFWvidmode class DesktopVideoMode private const GLFWvidmode videomode public DesktopVideoMode c