在C ++中与内联函数相互包含

时间:2014-05-04 08:58:54

标签: c++

我想写一些这样的代码:A对象调用其类B类型成员b的成员函数DoSomething,并在类{{1 } B成员函数,它调用DoSomeOtherThing的{​​{1}}成员函数。请参阅以下代码:

A类:

A

B组:

Notify

问题是我想保持函数内联,所以代码应该在头文件中。我不能简单地互相包容,因为它们可能导致相互包容,我不知道在这种情况下是否可以使用前瞻性声明。我可以在源文件中编写实现,但它们不是内联函数。那么,我该如何使代码工作呢?

1 个答案:

答案 0 :(得分:1)

您可以将成员函数的定义移出类定义,并通过使用inline显式地为其类外定义添加前缀,使它们保持内联(从而在标题中)。完成后,您会注意到

  • B的类定义可以在A的成员函数定义之前轻松移动,解决了从这些成员访问B的问题,以及
  • A的类定义只需要B的前向声明,因此在class B;的定义之前添加A会修复该问题。

执行这两项更改足以解决您的问题。