2012-04-23 90 views
1
一天

秒模板的問題,有什麼的n00b:模板循環依賴問題

我有一個模板類:

template <class T> 
class foo{ 
    private: 
    //... 
    T SubFoo; 
    //... 

}; 

我也有一個名爲MyClass的類。我想有那種對象:

foo<myClass> myObject; 

但是,這裏的問題,我希望能夠從myObject.SubFoo得到一個指向myObject的。這意味着類myClass的一個成員應該是模板類foo的實例化。

所以我可以做:

class myClass{ 
    //... 
    foo<myClass>* point2myClass; 

} 

但是,似乎這不起作用,因爲

./foo.h:103:錯誤:'富:: SubFoo具有不完整的類型

當定義MyClass的,程序發現它轉到foo的確定指標和其F中的線

foo<myClass>* point2myClass; 

INDS:

 T SubFoo; 

但T,在這種情況下MyClass的,還沒有被定義(這是什麼程序在做!),所以它不知道T是什麼,因此錯誤。

如果我互換聲明的順序,它也將失敗,因爲「富」將不被定義。

我怎樣才能使這項工作?

非常感謝!

+2

您確保代碼示例是精確的?因爲你不應該得到你得到的錯誤。 – 2012-04-23 12:35:01

回答

1

下面的代碼,一定要工作得很好。如果您的代碼不同,請指定位置。

template < typename T > 
struct A 
{ 
    T x; 
}; 

struct X 
{ 
    A<X>* x; 
}; 

int main() 
{ 
    X a; 
} 
+0

是的。這樣可行。所以它應該工作...也許這是另一回事。感謝您的意見。 – elelias 2012-04-23 12:54:08

+0

您可能根本沒有實例化模板。 – jpalecek 2012-04-23 12:57:38