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++ 未声明的标识符(但它已声明?) 的相关文章

随机推荐

  • 另一个针对 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