gpt4 book ai didi

c++ - 如何使用非类型参数重载类模板的 << 运算符?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:46 25 4
gpt4 key购买 nike

我正在尝试重载 operator<<类模板的,像这样:

template<int V1,int V2>
class Screen
{
template<int T1,int T2> friend ostream& operator<< (ostream &,Screen<T1,T2>&);
private:
int width;
int length;
public:
Screen():width(V1),length(V2){}
};
template<int T1,int T2>
ostream& operator<< (ostream &os,Screen<T1,T2> &screen)
{
os << screen.width << ' ' << screen.length;
return os;
}

上面的代码运行正确!但我想知道是否有任何方法可以重载 operator<<通过不将其设置为函数模板的方式:

friend ostream& operator<< (ostream &,Screen<T1,T2>&);

最佳答案

是的,但您必须预先声明模板并使用 <>语法:

template<int V1, int V2> class Screen;
template<int T1, int T2> ostream &operator<< (ostream &,Screen<T1,T2> &);
template<int V1, int V2>
class Screen
{
friend ostream& operator<< <>(ostream &, Screen&);
...

关于c++ - 如何使用非类型参数重载类模板的 << 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13932088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com