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