gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 00:04:14 26 4
gpt4 key购买 nike

我很确定我已经包含了 qanda 类,但是当我尝试声明一个包含它的 vector 或该类型的类时,我收到一条错误消息,指出 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?

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

class bot_manager;

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

关于C++ 未声明的标识符(但已声明?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4528108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com