【发布时间】:2017-02-09 03:07:36
【问题描述】:
我试图将一个类模板声明为另一个类模板的朋友,这样一个类中的私有成员可以被另一个类访问。 例如我有两个类如下:
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类
A.h
template <typename T> class B;
template <typename T>
class A {
friend class B<T>;
...
我正在使用 Visual Studio,上面的代码会给我“未解析的外部符号...”错误(错误代码 LNK2019)。 我尝试了其他变体,但我不断收到链接器错误。请帮帮我。谢谢。
函数 add(T) 的定义在 B.cpp 中,我没有在帖子中写。
【问题讨论】:
-
如果你得到一个链接器错误,那么编译成功,你的
friend声明工作正常。这是一条红鲱鱼。 -
很抱歉,我不知道这两个是不同的。
-
B<T>::add()的定义(实现)在哪里?如果链接中没有,则说明链接器错误。
标签: c++ class templates friend