【发布时间】:2020-01-24 18:49:56
【问题描述】:
我正在学习模板类的非模板友元函数和模板友元函数。所以我尝试了下面的代码:
#include <iostream>
template<typename T>
class cl
{
private :
T val;
public:
cl()= default;
explicit cl(T v) : val(std::move(v)) {}
friend void non_template_friend(cl m);
};
template <typename T>
void non_template_friend(cl<T> m) { std::cout << m.val << std::endl;}
int main()
{
cl<int> c(10);
non_template_friend(c);
return 0;
}
所以当我编译时我得到了:undefined reference tonon_template_friend(cl)' ` 所以要解决这个问题,我必须像这样在类定义中移动友元函数定义:
template<typename T>
class cl
{
private :
T val;
public:
cl()= default;
explicit cl(T v) : val(std::move(v)) {}
friend void non_template_friend(cl m) { std::cout << m.val << std::endl;}
};
但我想知道,有什么技巧可以在类定义之外定义朋友函数吗?
谢谢。
【问题讨论】:
标签: c++ templates friend-function template-classes