繁体   English   中英

声明班级成员具有内部联系

[英]Declare class member to have internal linkage

基本上我在头文件中有类似以下的代码:

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

class Bar
{
    Foo CreateFoo() {}
};

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

这段代码的问题是,一旦头文件包含在多个文件中,链接器就会抱怨说Foo::GetBar有多个定义。 但是,我无法将其放在可行的类定义中,因为那时Bar尚未定义。 我不想将其放在单独的.cpp文件中,因为我正在编写的库的其余部分(无论如何都不算​​很重)大部分都是模板,无论如何我都必须将其放置在标头中有点麻烦,因为我必须将一个函数放在标头之外,因此需要链接其他内容。

因此,有没有解决此问题而无需创建另一个.cpp文件的方法?

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

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

使函数显式内联:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM