2011-10-03 133 views
1

我的代碼具有與下圖所示相同的結構。我在單個頭文件中定義了兩個容器類,它們中的每一個都有一個帶有其他類的參數的朋友函數,所以我得到一個類似於'Class2'的編譯錯誤 - 未聲明的標識符。模板類C++朋友函數

嘗試了幾件事,但沒有解決。我認爲,如果再添​​加一個模板參數V到兩個模板並替換Class2<T>它可能是一個解決方案,但事情變得複雜,如果我在我的程序中使用這些容器。我還認爲將Class1和Class2分爲不同的標題和然後包含在Class1 Class2中,反之亦然,但我實際上我懷疑這可能會起作用。

我真的不知道如何解決這個問題,所以請你的幫助非常感謝!

template<class T> 
class Class1 
{ 
    ... 
    friend void function1(Class1<Class2<T>>&, const Class2<T>&); 
    ... 
}; 

template<class V> 
class Class2 
{ 
    ... 
    friend void function2(Class1<V>); 
    ... 
}; 

回答

3

在文件的開頭爲Class2添加前向聲明:

template<class V> class Class2; 
+0

非常感謝您! – 32l3n