基本上我有代码看起来像这样的报头文件中:声明类的成员具有内部链接
class Bar;
class Foo
{
public:
Bar GetBar();
};
class Bar
{
Foo CreateFoo() {}
};
Bar Foo::GetBar()
{...}
与此代码的问题是,一旦报头被包括在一个以上的文件中的链接器会抱怨Foo::GetBar
有多个定义。然而,我不能把它放在类的定义里面,因为Bar在这个时候没有定义。我不想把它放在一个单独的.cpp文件中,因为我正在编写的库的其余部分(反正它不是那么重),大部分模板我都必须放在一个头文件中,而且看起来似乎有点讨厌需要链接其他东西,因为我不得不在头之外添加一个函数。
因此,无论如何解决这个问题,而无需创建另一个.cpp文件?
一个问题,因为'inline'基本上是一个暗示,编译器,但实际上并没有强制编译器内联函数,这是否仍然有效,如果编译器决定不内联它? – 2010-01-06 17:36:16
@Matthieu:它也给出了函数“内联”,这基本上意味着你可以有多个定义(只要它们都是相同的)。 – 2010-01-06 17:49:39