VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: 661193

类模板问题 ver2

[复制链接]

3

主题

10

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-7-11 10:45:01 | 显示全部楼层
你可能是 没创建对象吧

比如

         One<10,20> o1;
        fun2(o1);
        cout<<o1<<endl;

        Two<int> ti1;
        cout<<ti1<<endl;
        fun1(ti1);
回复

使用道具 举报

3

主题

10

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-7-16 09:45:01 | 显示全部楼层
虽然我的问题 可能没什么实用价值 但这个问题要是搞不明白

我真是没法学下去了 心里总是有个疙瘩 很不爽

希望哪位看透c++的高手 来拉菜鸟一把!
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-7-18 07:45:01 | 显示全部楼层
最直接的方法,是将非绑定友元模板函数的声明定义都扔在类体内
回复

使用道具 举报

3

主题

10

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-7-21 09:15:01 | 显示全部楼层
新发现 在vs中

Two的 输出重载函数 可以通过编译

看来这个问题 真的阴暗阿 呵呵
回复

使用道具 举报

0

主题

55

帖子

44.00

积分

新手上路

Rank: 1

积分
44.00
发表于 2020-7-23 17:30:01 | 显示全部楼层

template<int i1,int i2>
class One
{
template<int ii1,int ii2> friend ostream& operator<<(ostream&,const One<ii1,ii2>&);
template<int ii1,int ii2> friend void fun2(const One<ii1,ii2>&);
};

template<int ii1,int ii2> ostream& operator<<(ostream&x,const One<ii1,ii2>&){return x;}
template<int ii1,int ii2> void fun2(const One<ii1,ii2>&){}

template<class T>
class Two
{
template<class TT> friend ostream& operator<<(ostream&,const Two<TT>&);
template<class TT> friend void fun1(const Two<TT>&);

};

template<class TT> ostream& operator<<(ostream&x,const Two<TT>&){return x;}
template<class TT> void fun1(const Two<TT>&){}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表