声明类成员具有内部链接

时间:2010-01-06 17:08:26

标签: c++

基本上我在头文件中有这样的代码:

class Bar;
class Foo
{
public:
   Bar GetBar();
};

class Bar
{
    Foo CreateFoo() {}
};

Bar Foo::GetBar()
{...}

此代码的问题在于,只要头文件包含在多个文件中,链接器就会抱怨Foo::GetBar有多个定义。但是我不能把它放在类定义中哪个可行,因为Bar没有在那时定义。我不想把它放在一个单独的.cpp文件中,因为我正在编写的库的其余部分(不管怎么说都不是那么重)主要是我不得不放在标题中的模板,看起来似乎因为我不得不在标题之外添加一个函数,所以要求链接其他东西有点烦人。

那么无论如何都可以在不创建另一个.cpp文件的情况下解决这个问题吗?

3 个答案:

答案 0 :(得分:8)

inline Bar Foo::GetBar()
{...}

答案 1 :(得分:0)

您可以内联声明此Foo::GetBar()函数。我应该解决多个定义。

答案 2 :(得分:0)

明确内联函数:

inline Bar Foo::GetBar()
{...}