【发布时间】:2015-01-05 17:09:34
【问题描述】:
我正在编写如下代码:
template<typename T>
class A {
// makeA should become a friend
A() {}
};
template<typename T, typename U>
A<T> makeA(const U & u) {
(void) u;
return A<T>();
}
int main() {
makeA<double>(3);
return 0;
}
但是我不能让makeA成为A的朋友。这可能吗?什么是正确的语法?
【问题讨论】:
-
首先你不应该将 A() -->构造函数设为私有
-
你在问什么“正确的语法”?这让
makeA成为朋友?你的问题到底是什么?你想和它交朋友吗?或者不加好友,你想访问私有构造函数? -
@Nawaz 您发布的答案正是我想要的。在友谊声明中,我使用
makeA(U)而不是makeA(const U &)。谢谢! -
@Nawaz 我可以访问私有构造函数而不使其成为朋友吗???
-
@Shan Uhm 请问什么?这可能就是为什么要使用
friend函数进行构造的原因?!