C++ 未声明的标识符(但它已声明?)

2023-12-01

我很确定我已经包含了 qanda 类,但是当我尝试声明包含它的向量或该类型的类时,我收到一条错误消息,指出 qanda 未定义。知道可能是什么问题吗?

bot_manager_item.h

#pragma once

#include "../bot_packet/bot_packet.h"
#include <vector>

class bot_manager_item;
#include "qanda.h"
#include "bot_manager.h"

class bot_manager_item
{
public:
    bot_manager_item(bot_manager* mngr, const char* name, const char* work_dir);
    ~bot_manager_item();

    bool startup();
    void cleanup();
    void on_push_event(bot_exchange_format f);
    bool disable;

private:
    void apply_changes();
    bot_manager *_mngr;

    std::string _name;
    std::string _work_dir;
    std::string _message;
    std::string _message_copy;
    std::vector<qanda> games;
    qanda test;

    char _config_full_path[2600];
};

qanda.h

#ifndef Q_AND_A
#define Q_AND_A

#include "users.h"
#include "..\bot_packet\bot_packet.h"
#include "bot_manager.h"
#include <string>
#include <algorithm>
#include <map>
#include <vector>
#include <fstream>


class qanda
{
public:
    qanda(bot_manager * manager, std::string name, std::string directory);
    ~qanda(){};
    void room_message(std::string username, std::string user_message);
    void timer_tick();

private:
    // data members
    std::string question;
    std::string answer;
    std::string directory;
    std::string command_prefix;
    std::string name;

    Users users;
    std::map <std::string, std::string> questions_and_answers;

    int time_per_question; // seconds
    int time_between_questions; // seconds
    int timer; // milliseconds

    bool is_delayed;
    bool is_playing;

    bot_manager * manager;

    // functions
    void new_question();
    void send_message(std::string msg);
    void announce_question();
    void load_questions();

};

#endif

已解决:我最终重构了代码,以避免在 qanda 类中使用 bot_manager。


我怀疑是一个循环#include问题。 qanda.h 是否可能间接包含 bot_manager_item.h?

看来您可以通过使用前向声明来减少标头依赖性

class bot_manager;

代替#include "bot_manager.h"在您发布的一个或两个头文件中。

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

C++ 未声明的标识符(但它已声明?) 的相关文章

  • VLC 媒体播放器有 C# 界面吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否可以使用 C 控制台应用程序中的包装器从 VLC 播放中当前播放的文件中读取曲目统计信息 时间 标
  • 使用链表进行堆排序

    我想知道是否有人曾经使用链表进行堆排序 如果他们可以提供代码 我已经能够使用数组进行堆排序 但尝试在链表中进行排序似乎不切实际 而且在你知道的地方很痛苦 我必须为我正在做的项目实现链接列表 任何帮助将不胜感激 我也用C 答案是 你不想在链表
  • 格式说明符%02x

    我有一个简单的程序 include
  • 是否需要销毁运算符删除的形式才能真正销毁对象?

    C 20 添加了破坏形式operator delete区别于std destroying delete t范围 它导致delete表达式在调用之前不再销毁对象operator delete 目的是在显式调用对象的析构函数和释放内存之前 允许
  • 使用 ADAL v3 使用 ClientID 对 Dynamics 365 进行身份验证

    我正在尝试对我们的在线 Dynamics CRM 进行身份验证以使用可用的 API 我能找到的唯一关于执行此操作的官方文档是 https learn microsoft com en us dynamics365 customer enga
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • Selenium - C# - Webdriver - 无法找到元素

    在 C 中使用 selenium 我试图打开浏览器 导航到 Google 并找到文本搜索字段 我尝试下面的 IWebDriver driver new InternetExplorerDriver C driver Navigate GoT
  • 使用 C# 和 ASP.NET 在电子邮件附件中发送 SQL 报告

    我正在尝试使用 ASP NET 和 C 从 sql reportserver 2008 作为电子邮件附件发送报告 到目前为止我学会了如何获取 PDF 格式的报告 http weblogs asp net srkirkland archive
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • 用于在标头更改时重新编译的简单 C 项目的示例 makefile

    有谁有完整的 makefile 可以执行以下操作 如果 HEADER 文件发生更改 则重建项目 cpp 文件在 makefile 中列出 头文件未在 makefile 中列出 头文件允许与 cpp 文件具有不同的名称 部分cpp文件没有头文
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • 来自嵌入图像的 BitmapSource

    我的目标是在 WPF 窗口上重写 OnRender 方法中绘制图像 someImage png 它是嵌入资源 protected override void OnRender System Windows Media DrawingCont
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • C# 获取数据表中所有重复行的计数

    我通过运行存储过程来填充数据集 并且从数据集中填充数据表 DataSet RawDataSet DataAccessHelper RunProcedure storedprocedureName this will just return
  • 如何防止 Blazor NavLink 组件的默认导航

    从 Blazor 3 1 Preview 2 开始 应该可以防止默认导航行为 https devblogs microsoft com aspnet asp net core updates in net core 3 1 preview
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • Unity3D - 将 UI 对象移动到屏幕中心,同时保持其父子关系

    我有一个 UI 图像 它的父级是 RectTransform 容器 该容器的父级是 UI 面板 而 UI 面板的父级是 Canvas 我希望能够将此 UI 图像移动到屏幕中心 即画布 同时保留父级层次结构 我的目标是将 UI 图像从中心动画
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • 如果将变量设置为等于新对象,旧对象会发生什么?

    假设我们有一个 X 类not有一个超载的operator 功能 class X int n X n 0 X int n n n int main X a 1 an object gets constructed here more code

随机推荐

  • 另一个针对 excel 2007 的优化宏 vba 代码。该代码是我的数据的一种转置器

    您好 这段代码最初不是由我完成的 这里有一些事情我不太明白 我已经对我的同事代码进行了一些修改以适应我的数据并且它有效 但太慢了 当我有 4000 kb 的 Excel 文件时 它可能会完全冻结 我已经检查过 当这个转置器运行时和之后 它仍
  • 如何使用curl 和 GraphQL updateIssueComment 突变更新 Github 中的问题或 PR 评论

    我想更新 Github PR 或问题中的评论 但我发现很难找到有效的示例 这就是为什么我问这个问题 我自己来回答 希望其他人可以使用这个 以下代码片段将使用 GraphQL 突变和curl 更新问题或 PR 评论 确保更换
  • C++ 模块到底是什么?

    我一直在跟踪 C 标准化并遇到了 C 模块的想法 我找不到关于它的好文章 到底是关于什么的 动机 简单的答案是 C 模块就像header那也是一个翻译单位 它就像一个标头 您可以使用它 与import 这是一个新的上下文关键字 来访问库中的
  • 如何从 ResourceDictionary 引用 BindingProxy 实例

    任何 wpf 程序员迟早都会开始使用绑定代理 我试图通过将一些资源移动到单独的资源字典中来拆分 xaml 我的问题是资源包含对BindingProxy 我该如何处理这种情况 举个例子 假设有一个资源BindingProxy这是在某处使用的
  • Blazor Editform 更改事件

    我希望在 blazor editform 中有一个 InputSelect 它绑定到模型值 并且还有一个 onchange 事件 该事件根据新值更改模型中的其他属性 绑定到 bind Value 和 onchange 不起作用 我猜测是因为
  • 使用 Alamofire 将嵌套数组从 JSON 数据显示到表视图

    我已经在表视图中显示了第一个 json 数据 但是当尝试显示内部数组数据的数组数据时 它在表视图上显示空白数据 我已经厌倦了很多方法 有时它显示索引超出范围 不知道我哪里出错了或者忘记编写代码 我可以在表视图中显示费用类数据 但无法显示描述
  • 在 Ansible 中添加带有循环的列表

    我正在尝试将新的隧道接口附加到空列表中 但出现以下错误 name empty list set fact list tunnel name create new list for tunnel set fact list tunnel ne
  • 加载具有相同静态链接函数的两个共享库时使用哪个函数

    我一直在阅读并试图理解符号是如何在 Linux 的共享库中解析的 所以这是我所面临的情况的描述 我正在使用一个应用程序 APP 可以加载用户创建的共享库以添加功能 我有两个这样的图书馆 LIB A so and LIB B so执行单独的事
  • 我的下拉菜单上的淘汰验证不起作用

    我使用 durandal 模板 微风开发一个 ASP NET MVC 项目 我想在我的视图上定义验证逻辑以进行添加 编辑操作 到目前为止 它适用于文本 从数据库填充的下拉列表 当元素不包含任何数据时 由于剔除验证 该元素被标记为红色 但它不
  • xslt 和 xpath:直接匹配前面的注释

    我正在尝试对一批 XML 文档应用 XSLT 转换 变换的要点是对几个元素重新排序 我希望保留任何评论directly位于元素之前
  • 为什么我的 Disruptor 程序没有充分利用环形缓冲区

    Disruptor github地址是 https github com LMAX Exchange disruptor 我对其进行了一个简单的测试 如下所示 public class DisruptorMain SuppressWarni
  • 如何用any检查系列中的值?

    我正在和熊猫一起工作 我需要根据其他列中的条件在数据框中创建一个新列 我尝试查找系列中的每个值 如果它包含一个值 返回文本的条件 当值完全相同时 这有效 但当该值只是系列值的一部分时 则无效 if any something in df2
  • 在 JBoss AS 中部署的 2 个 Java EE 应用程序之间共享会话

    我有 2 个 Java EE 应用程序 需要共享登录用户的一些常见用户相关数据 无论如何 我可以通过一个应用程序将这些数据存储在会话中 并在第二个应用程序中检索该数据吗 IE 类似于 NET 中的粘性会话 两个单独的 Java EE 应用程
  • 使用批处理文件获取目录的大小(以“MB”为单位)

    我想获取目录的大小C Temp in MB使用批处理文件 我不需要子目录或文件的大小 而是目录本身的大小 我在以下位置找到了答案如何通过批处理文件列出所有文件夹的大小 但它给了我尺寸bytes以及子文件夹的内容 所以我的问题是 如何获取目录
  • Swift 来回滑动图像数组

    我有一组图像 我希望能够向前 向左 滑动到下一个图像 或向后 向右 滑动到上一个图像 当 imageList 达到 1 超出范围时 应用程序崩溃 我无法弄清楚如何将其保持在范围内的逻辑 这是我的代码 var imageList String
  • 从函数返回本地字符数组[重复]

    这个问题在这里已经有答案了 如何从一个函数返回本地字符数组 char testfunction char array Hello World return array char main char array testfunction pr
  • 绘制连续信号

    我正在尝试准确打印连续信号 如下图所示 下面是我的代码 x 0 0 0 1 1 1 1 1 1 1 1 0 0 n 6 5 4 3 2 1 0 1 2 3 4 5 6 subplot 2 2 2 axis min n 10 max n 10
  • 在方向模式下更改 ActionBar 高度

    我已经使用actionbar android native 几天了 jellybean 4 2 我尝试通过在 style xml 中添加以下行来更改操作栏的高度 100dip 它在横向模式下工作正常 但在方向模式下不起作用 在定向模式下 其
  • 在 Python 中访问嵌套键

    我有一个嵌套字典 如下所示 entry 0 Q 0 1 W 2 E 3 N 5 S 4 Q 0 2 N Q E 当我尝试仅访问密钥的密钥时1 我得到以下信息 gt gt gt print entry 1 keys dict keys W E
  • C++ 未声明的标识符(但它已声明?)

    我很确定我已经包含了 qanda 类 但是当我尝试声明包含它的向量或该类型的类时 我收到一条错误消息 指出 qanda 未定义 知道可能是什么问题吗 bot manager item h pragma once include bot pa