|
1
2
fun内的Friend声明必须与函数模板转发声明匹配,否则会产生不相关的函数:
定义应该放在外面:
演示问题的较短代码是:
|
|
|
2
2
关于友元函数有一些奇怪的规则。
很像模板的成员可以是模板本身,也可以不是,这是一个非模板友元函数,它是为模板的每个模板类实例化创建的
这
从这一点来看,你的大部分错误都很清楚。您认为的转发声明是一个不相关的模板函数。你认为是朋友的东西不是,所以你没有访问私有构造函数的权限。 我们可以用几种方法解决这个问题。我最喜欢的方法是添加标记类型。
然后主要是:
但你可能不想提
|
|
3
1
好吧,我找到了答案: 为了使友元声明正常工作,必须将其限定为函数 模板
但是,将定义与友元声明相结合仍然失败:
结果:
我真的不明白,因为远期申报仍然有效。 |
|
|
4
1
使用GCC 8.2.1。我添加的是朋友声明的模板名称。 |
|
|
sungjun cho · 函数模板重叠多个匹配项 1 年前 |
|
|
Amaterastis · 基类接受子类和内部子类的模板参数 1 年前 |
|
|
111111 · 确定作为模板参数传递的函数的参数类型 1 年前 |
|
|
Sam · 在LaTeX中将图像添加到预制的投影仪中 1 年前 |
|
|
user416983 · 模板函数成员作为模板参数 1 年前 |
|
|
PyOPTProblem · c++如何模板化模板参数的部分实例化? 1 年前 |