我知道这是一个关于 C++ 的常见问题,但是按照其他答案等的建议,我仍然无法让我看似简单的代码工作。我的问题是以下代码给出了“错误:'class Communicator'的重新定义”:
全局.h
#ifndef GLOBAL_H
#define GLOBAL_H
class object_payload;
class pending_frame;
class Communicator {
private:
map<string,object_payload*> local_objects;
map<string,pending_frame*> remote_tasks;
bool listening;
public:
Communicator();
void stop_listening();
void add_to_remote_tasks(string name, pending_frame* pfr);
void listen();
void distributed_release(string task_name);
};
extern Communicator communicator;
#endif
全球.cpp
#include "global.h"
class Communicator {
private:
map<string,object_payload*> local_objects;
map<string,pending_frame*> remote_tasks;
bool listening;
public:
Communicator(){
// implementation
}
void stop_listening(){
// implementation
}
void add_to_remote_tasks(string name, pending_frame* pfr){
// implementation
}
void listen(){
// implementation
}
void distributed_release(string task_name){
// implementation
}
};
Communicator communicator;
有谁知道为什么会出现这个错误?.cpp 包含标头。我还有其他 .cpp 文件也包含标题,但是对于警卫,我不明白为什么这很重要。
感谢您对此的任何帮助,非常感谢。
编辑:另外,我的 runner.cpp 文件(带有 main)包括 global.h 以便访问通信器全局对象。