我得到的错误是。
error: multiple definition of 'enum class Color'
我搜索了互联网(包括此处),但找不到解决方案。 我尝试了很多操作,例如删除头文件中的命名空间(仍删除)或将extern放在color之前(给出错误)。似乎唯一可行的方法是将ComposedShape文件中的所有内容都包含在内,并将每个文件中的ComposedShape.h包含在内,但是类以某种方式发生冲突。但是我知道的是标头后卫应该阻止这种情况,所以我编写了此版本的代码。 我的文件就是这样。
--Circle.h--
#ifndef _HW2_CIRCLE_H
#define _HW2_CIRCLE_H
enum class Color{G,R};
...
#endif
--Triangle.h--
#ifndef _HW2_TRI_H
#define _HW2_TRI_H
enum class Color{G,R};
...
#endif
--Rectangle.h--
#ifndef _HW2_RECT_H
#define _HW2_RECT_H
enum class Color{G,R};
...
#endif
--ComposedShapes.h--
#ifndef _HW2_CS_H
#define _HW2_CS_H
...
#endif
--main.cpp--
#inlude "ComposedShapes.h"
以及所有这些文件的cpp文件 它给出了错误
答案 0 :(得分:0)
[继续评论。]
只需为您的enum class
创建一个头文件:
--Color.h--
#ifndef _HW2_COLOR_H
#define _HW2_COLOR_H
enum class Color{G,R};
#endif
并在您需要的任何地方添加它,例如:
--Triangle.h--
#ifndef _HW2_TRI_H
#define _HW2_TRI_H
#include "Color.h"
...
#endif
这样,如果您多次包含Color.h
,则Color
的定义将只出现一次。