//myheader.h
namespace abc{
int func(int x) { return 10 + x;}
inline int callfunc(int a){ return func(a); }
}
//global.h
int func(int x){ return 10 + x; }
在上面的示例中,编译代码时,即使现在没有在任何地方调用内联函数,它也会返回错误以解决func(int x)
的歧义。为什么内联函数不采用namespace abc
中已存在的现有定义?
答案 0 :(得分:0)
尽管如此,我还是会针对您的问题提出一些可能的解决方案。
尝试在调用func:
时指定名称空间 inline int callfunc(int a){ return abc::func(a); }
你真的不应该在标题中定义非内联函数,如果你将标题包含在多个.cpp文件中,你将会遇到链接器错误。
所以你应该保留.cpp中的定义和.h文件中的声明只是它的意思。