重新定义struct g ++

问题描述 投票:0回答:1

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

我在这里错过了什么吗?

c++ header g++
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.