在类函数和命名空间之间重新声明的符号

时间:2013-09-19 14:00:30

标签: c++ namespaces conflict

我的makefile中有两个头文件。

一个有一个函数符号“uint32_t util :: hash(const char *)”,

另一个有名称空间符号“namespace util :: hash {}”

g ++抱怨:

StringUtil.h:24: error: ‘uint32_t util::hash(const char*)’ redeclared as different kind of symbol
../util/hash/Hash_Interface.h:8: error: previous declaration of ‘namespace util::hash { }’

并且这两个文件来自其他lib,所以我无法更改名称。怎么解决?

1 个答案:

答案 0 :(得分:1)

您可以将其中一个头文件包含在命名空间中,例如

namespace foo
{
#include "some_file.h"
}

现在"some_file.h"头文件中的所有符号都在foo命名空间中。