我試圖將類模板聲明爲另一個類模板的朋友,所以一個類中的私有成員可以被另一個類訪問。 比如我有兩個類,如下所示:在C++中聲明一個類模板作爲類模板的朋友
A.h
template <typename T>
class A {
private:
T content;
}
和
B.h
#include "A.h"
template <typename T>
class B {
public:
void add(T);
private:
A<T>* ptr;
}
現在,我想使B類< T> A級< T>的朋友,所以我可以有通過B類< T>的功能添加訪問A類< T>的內容。所以,我添加了幾行A.H:
A.h
template <typename T> class B;
template <typename T>
class A {
friend class B<T>;
...
我使用Visual Studio和上面的代碼會給我「解析外部符號...」(出錯代碼LNK2019)。 我試過其他的變化,但我不斷收到鏈接錯誤。請幫助我。謝謝。
函數add(T)的定義在B.cpp中,我沒有在帖子中寫過。
如果你得到一個鏈接錯誤,那麼編譯成功,你的'朋友'聲明正常工作。這是一條紅鯡魚。 – Quentin
對不起,我不知道這兩個是不同的。 – HelperKing
'B :: add()'的定義(執行)在哪裏?如果鏈接中沒有鏈接,則會解釋鏈接器錯誤。 –
Peter