我有一個兩個模板類,templateClass1和templateClass2。我想在templateClass2中使用templateClass1的私有變量和方法。在C++中使用friend關鍵字可以這麼做嗎?一個模板類可以成爲C++中另一個模板類的朋友嗎?
薩米特
我有一個兩個模板類,templateClass1和templateClass2。我想在templateClass2中使用templateClass1的私有變量和方法。在C++中使用friend關鍵字可以這麼做嗎?一個模板類可以成爲C++中另一個模板類的朋友嗎?
薩米特
它可以有任何類型的朋友,但直到它的模板參數已經提供的模板是不是一個類型。所以一般來說,你必須爲每一個你想成爲朋友的完整類型專門化。這會推動你嘗試將類型作爲模板參數傳遞給好友,但是你不能提供一個模板類型。
for ex。這是非法的
template <class T>
class A
{
friend class T;
};
有了這些規定,它使得很難做任何意義完整的模板和親和力。
無論如何要解決這個問題嗎? – slonkar 2012-03-26 00:53:28
'friend T'在C++中是合法的11 – 2012-03-26 00:53:46
由於編譯器已經被告知'T'是一個類型,因此語法只是'friend T;'。 – 2012-03-26 00:54:20
我知道這個帖子可能是死的,但對於已在此絆倒誰其他人......
templateClass1.h
template <class T> class templateClass2; // forward declare
template <typename T>
class templateClass1 {
friend templateClass2<T>;
};
templateClass2.h
template <class T> class templateClass1; // forward declare
template <typename T>
class templateClass2 {
friend templateClass1;
}
您錯過了templateClass2.h中第5行的'
Di你試試?那麼發生了什麼? – 2012-03-26 05:47:34