所以,我正在开发一个项目,我有一个头文件simpleCommand.hh
,我需要在另外两个头文件中引用它。我在simpleCommand.hh
和command.hh
中加入了builtin.hh
。现在,builtin.hh
中包含command.cc
,其中还包含command.hh
,因此g ++告诉我struct SimpleCommand
被定义了两次。但是,如果我从simpleCommand.hh
删除builtin.hh
包含,则g ++会告诉我SimpleCommand
中使用builtin.hh
时尚未定义{。}}。
这是奇怪的部分:如果完成所有这些后,我进入builtin.hh
并重新添加include "simpleCommand.hh"
,程序编译得很好。但是,如果我尝试在将来的另一个点编译,g ++将再次给我这个错误,我必须开始这个过程。
我在这里错过了什么吗?
答案 0 :(得分:0)
你需要从command.hh中删除SimpleCommand.hh,因为build.hh得到它并且command.hh是herited到build.hh所以command.hh会得到两次SimpleCommand.hh。或者你可以将SimpleCommand.hh的一些函数声明为virtual :)