2008-10-08 54 views
4

如何在C++中執行引用/聲明以避免循環頭文件引用?C++中的正向引用或聲明

我在頭文件中有#ifndef後衛,但內存告訴我我需要這個前向引用的東西 - 我以前用過> <但不記得怎麼回事。

回答

15

你預先聲明瞭這個類沒有包含它。例如:

//#include "Foo.h" // including Foo.h causes circular reference 
class Foo; 

class Bar 
{ 
... 
}; 
+0

在這種情況下還需要注意:類Bar不能包含類Foo,但它可以有指向類Foo的指針。 – KPexEA 2008-10-08 18:12:08

+0

另請注意,函數的正式返回類型可以是前向聲明類型。 – QBziZ 2008-10-08 18:14:17

-2

如果您有#ifndef警衛,則不會獲得循環的頭文件引用。這纔是重點。

正向引用用於避免僅由指針或引用使用的對象的#include(ing)頭文件。然而,在這種情況下,你並沒有解決循環引用問題,你只是練習良好的設計,並將.h文件從它不需要知道的細節中解耦出來。

1

我相信你所說的正確術語是「前向聲明」。 「正向引用」會有點混淆。