重新定义struct g ++

时间:2018-03-04 04:17:42

标签: c++ header g++

所以,我正在开发一个项目,我有一个头文件simpleCommand.hh,我需要在另外两个头文件中引用它。我在simpleCommand.hhcommand.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 ++将再次给我这个错误,我必须开始这个过程。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

你需要从command.hh中删除SimpleCommand.hh,因为build.hh得到它并且command.hh是herited到build.hh所以command.hh会得到两次SimpleCommand.hh。或者你可以将SimpleCommand.hh的一些函数声明为virtual :)