错误:“...”未命名类型

2024-03-01

我有一个工作项目。重新安排一些代码后,我尝试重新编译我的项目,然后奇怪的事情开始发生。看一下编译器输出的摘录。我正在使用 MinGW G++ 从 Windows 上的 Eclipse 进行编译。

**** Build of configuration Debug for project Pract2 ****

**** Internal Builder is used for build               ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -omove.o ..\move.cpp
In file included from ..\/game.h:11:0,
                 from ..\/piece.h:10,
                 from ..\/move.h:10,
                 from ..\move.cpp:7:
..\/board.h:18:2: error: 'Piece' does not name a type

board.h,第 18 行:

Piece* GetPieceAt(int row, int col) const;

通常当发生这种情况时,我只需要添加一些我忘记做的内容即可。但事实上我已经包括了piece.h在顶端board.h.

我的第二个想法是编译器一定在某个位置生成了错误Piece类会导致编译器忽略该类的存在,进而会导致更多错误。在这种情况下,我会查看第一个编译器错误,我预计该错误与以下错误有关片断.cpp or piece.h。但第一个错误不是关于Piece根本没有,所以我查看了 Eclipse 是否标记了任何错误片断.cpp or piece.h。不,看不到红线。我只看到了几个这些无法解释的黄色标记 http://img139.imageshack.us/img139/8529/yellowmarkers.jpg.

我检查的最后一件事是每个头文件都包含包含防护,他们确实做到了。

我该如何查明此错误的真相?我会发布代码片段,但随后我可能最终会粘贴整个代码(我不能这样做),因为可能需要额外的上下文。

Edit: 这里是board.h直到第 18 行。(我省略了一个大注释,这解释了为什么这段代码比您预期的要小。)

#ifndef BOARD_H_
#define BOARD_H_
#include "piece.h"

class Board {
public:
    // Prototypes for externally defined functions
    Board();
    ~Board();
    void PrintBoard();
    Piece* GetPieceAt(int row, int col) const;

最有可能通过“重新排列代码”,您在之间创建了循环包含board.h and piece.h。您的头文件包含包含保护,可以防止在这种情况下无限包含,但这无助于声明的编译。

检查循环包含并相应地重新考虑您的包含策略。如果类型之间没有任何循环依赖关系,则应该能够轻松消除循环包含。如果类型之间确实存在循环依赖关系,则必须对某些类型采取前向声明。尝试以循环方式包含头文件不会取得任何成果。

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

错误:“...”未命名类型 的相关文章

随机推荐

  • 在jHtmlArea中添加表格

    有人知道使 jHtmlArea 支持表格内容并允许用户将表格 单元格 行添加到编辑器框的方法吗 它似乎不是该插件的标准功能 我希望我的用户能够在所见即所得编辑器中创建表 试试这个代码 只需将 editor 更改为您为文本区域设置的 id 即
  • 根据 OnKeyUp 中的文本框过滤列表框项目?

    我有一个包含大量项目的列表框 这些项目都是帐号 因此很难搜索 当用户在文本框中键入内容时 是否可以对项目进行 过滤 以便仅显示与迄今为止输入的内容相匹配的项目 e g List Box 2342 3434 2332 3224 然后用户在文本
  • R - ggplot2 直方图的阴影部分

    所以我有这个数据 dataset rbinom 1000 16 0 5 mean mean dataset sd sd dataset data subset subset dataset dataset gt mean 2 sd data
  • 错误:环境中未设置 XDG_RUNTIME_DIR。 Gtk-警告 **:无法打开显示:

    我曾经用 sublime 打开文本文件 对于只读文件 我曾经这样做 sudo sublime 但现在突然间sudo sublime命令给出以下错误 sublime 3931 Gtk WARNING cannot open display w
  • 无法调用类型缺少调用签名的表达式

    我有苹果和梨 两者都有isDecayed属性 interface Apple color string isDecayed boolean interface Pear weight number isDecayed boolean 这两种
  • 如何在闪亮的仪表板侧边栏中的 menuSubItem 下包含输入小部件?

    如何在闪亮应用程序的侧边栏中的 menuSubItem 下包含一个控件小部件 这是我的试验 library shiny library shinyWidgets library shinydashboard ui lt dashboardP
  • 使用 Ninject 将存储库注入自定义会员资格提供程序

    我正在尝试使用 MVC 3 中的 ninject 将存储库注入到自定义成员资格提供程序中 在 MembershipProvider 中我尝试了以下操作 Inject public ICustomerRepository customerRe
  • 如何更新外键

    我有 2 张桌子 第一个表的设计如下 Table 1 id Doc line sheet pk Autonumber DocNo text lineNo text Sheet No text 字段组合 DocNo lineNo Sheet
  • 如何禁用 Internet Explorer 的同源策略

    Chrome允许我们禁用同源策略 因此我们可以测试跨源请求 我想知道是否有可能在 IE 中做同样的事情 是的 您可以在 Internet 选项 中进行设置 转到 安全 选项卡 对于当前区域 单击 自定义级别 按钮 在下一个窗口中 向下滚动大
  • 更改底层依赖项后 SQL Server 视图显示过时/错误的数据

    我们有一个视图 称为 X 它是由另外 2 个视图 称为 Y 和 Z 调用的基本视图 今天我们对视图 X 进行了更改 之后视图 Y 和 Z 开始带回不正确的数据 当我们在 Management Studio 中运行时SELECT FROM Y
  • Javascript - 检索对象属性路径[重复]

    这个问题在这里已经有答案了 我有以下对象 var obj obj foo obj foo bar I want this 给定 路径 foo bar 作为字符串 我如何检索obj foo bar or obj foo bar 这是一个方法
  • 应用程序首次启动时调用 didReceiveRemoteNotification

    我已经实现了 didReceiveRemoteNotification 方法 它工作并显示一个视图控制器以及传递的通知数据 仅当应用程序已在前台或在后台运行时 此功能才有效 但是 当应用程序未运行并且用户单击通知时 应用程序会启动 但看起来
  • 进程监控 CreateProcessNotifyRoutineEx

    我正在开发一个用于监视进程创建的驱动程序 我编写了一个简单的代码来完成它 我用PsSetCreateProcessNotifyRoutineEx 但这行不通 我完全遵循微软的帮助在这个链接上 http msdn microsoft com
  • Boost Beast 在关闭后重新连接 websocket 连接

    我正在使用 boost beast 创建 websocket 连接 到目前为止它似乎工作正常 但我无法弄清楚断开连接后是否应该替换 websocket stream 变量 即我有一个变量 boost beast websocket stre
  • 有没有办法在 C 中使用具有常量索引的常量数组作为 switch case 标签?

    我有一些常量值和数组定义它们的标签和哈希码 例如 define LABEL A 0 or const int LABEL A 0 define LABEL B 1 define LABEL C 2 define LABEL D 3 cons
  • 获取 Google 表单脚本生成的电子邮件以将数据传输到响应表中

    我目前正在尝试设置审批工作流程 对于这些事情 我还相当初级 但到目前为止 在示例的帮助下 它已经达到了可观的水平 可以满足我们的需求 我正在使用来自的模板 示例使用 Google 脚本和表单进行电子邮件批准 https sites goog
  • 无法删除 S3 存储桶 - 错误未找到数据

    我无法摆脱 S3 中的五个桶 AWS 控制台中的每个屏幕都会显示 未找到错误数据 即概述 属性 权限 管理 访问点 我无法设置生命周期删除对象的规则 但存储桶中从未有过任何内容 而且版本控制也从未启用 我也尝试过在我的终端中强制它 aws
  • Qt 4.8 beta 和 Mac OSX Lion,Phonon 错误

    成功安装 mac OS 10 7 后 我尝试编译我的 qt 4 7 项目 我收到了很多 不支持的 mac os x 版本 的警告 因此我决定使用 Qt 4 8 beta 现在所有警告都消失了 但是 我现在使用 Phonon 时遇到链接器问题
  • 为什么window.width小于媒体查询中设置的视口宽度

    我很困惑 仍然不知道如何用合适的语言解释这一点 到目前为止 我已经使用断点并设置了媒体查询 使用的断点变量如下所示 menustatictofixed min width 900px breakpoint to ems 设置为 true 我
  • 错误:“...”未命名类型

    我有一个工作项目 重新安排一些代码后 我尝试重新编译我的项目 然后奇怪的事情开始发生 看一下编译器输出的摘录 我正在使用 MinGW G 从 Windows 上的 Eclipse 进行编译 Build of configuration De