| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1455 人关注过本帖
标题:求助~~~~~~~~~~~~~哪里有错误,总是过不去
只看楼主 加入收藏
taky123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-1-8
收藏
 问题点数:0 回复次数:14 
求助~~~~~~~~~~~~~哪里有错误,总是过不去
#include <iostream>
#include <string>
using namespace std;
template<class T>
class ff
{
    public:
        ff(T a=T() ):value(a) {}
        void setValue(T k) {value=k;}
        friend ostream& operator << (ostream &,ff<T> &);
    private:
        T value;
};

template<class T>
ostream& operator << (ostream& output,ff<T>& cc)
{
    output << "the value is " << cc.value() << endl;
    return output;
}

int main()
{
    ff<int> aa;
    cout << aa ;
    system("pause");
    return 0;
}
我把它化的很简了,但是重载流和模板联系的时候还是有错,大家帮我看看,先谢了
搜索更多相关主题的帖子: class void private include public 
2008-01-08 12:14
zjl138
Rank: 1
等 级:新手上路
威 望:1
帖 子:788
专家分:0
注 册:2007-11-12
收藏
得分:0 
你用的编译器是VC6。0吗?

i like linux...
2008-01-08 13:15
zjl138
Rank: 1
等 级:新手上路
威 望:1
帖 子:788
专家分:0
注 册:2007-11-12
收藏
得分:0 
output << "the value is " << cc.value() << endl;
不明白你的cc.value() 是什么,应该是cc.value这样吧!
还有如果你用的编译器是VC6.0的话,调用友元会出错!!!但改用#include<iostream.h>这个头文件又没错,这点我也不大清楚,还是等大牛们来回答吧!!!
以上薄见,勿笑!!!

i like linux...
2008-01-08 13:43
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
应该是编译器的问题.....搞不懂VC6.0连友元都不能访问私有成员是为啥~

樱花大战,  有爱.
2008-01-08 14:01
linsua
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2008-1-2
收藏
得分:0 
你把  friend ostream& operator << (ostream &,ff<T> &);
改成:template<class U>
            friend ostream& operator << (ostream &,ff<U> &);
就好了,原因看Hurb Sutter的三卷本

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-01-08 14:08
taky123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-1-8
收藏
得分:0 
谢谢楼上的,高手啊~~~
我会去看那本书的
2008-01-08 15:23
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
有谁告诉我非模板的友元也不能访问私有成员是为何??

樱花大战,  有爱.
2008-01-08 16:24
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include <iostream.h>
#include <string.h>
//using namespace std;
template<class T>
class ff
{
    public:
        ff(T k){ setValue(k);}
        void setValue(T k) {value=k;}
        friend ostream& operator << (ostream &,ff<T> &);
    private:
        T value;
};

template<class T>
ostream  &operator<< (ostream& output,ff<T>& cc)
{
    output << "the value is " << cc.value<< endl;
    return output;
}

int main()
{  
   
    ff<int> aa(8);
    cout << aa ;
    //system("pause");
    return 0;
}
你得程序我有点不懂.
ff(T a=T() ):value(a) {}可以告诉我是什么意思吗?????
2008-01-08 17:08
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你得程序我有点不懂.ff(T a=T() ):value(a) {}什么意思啊?
这是我的:#include <iostream.h>
#include <string.h>
//using namespace std;
template<class T>
class ff
{
    public:
        ff(T k){ setValue(k);}
        void setValue(T k) {value=k;}
        friend ostream& operator << (ostream &,ff<T> &);
    private:
        T value;
};

template<class T>
ostream  &operator<< (ostream& output,ff<T>& cc)
{
    output << "the value is " << cc.value<< endl;
    return output;
}

int main()
{  
   
    ff<int> aa(8);
    cout << aa ;
    //system("pause");
    return 0;
}
2008-01-08 17:09
taky123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-1-8
收藏
得分:0 
回复 8# 的帖子
ff(T a=T() ):value(a) {}是构造函数表,用来初始化类用的
还可以写成 ff( T a=T() ) {value=a;}     
T()是表示初值为0或空

还有,你的程序运行不了啊,我问的问题你看下,好像你也没注意那~
2008-01-08 18:12
快速回复:求助~~~~~~~~~~~~~哪里有错误,总是过不去
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017082 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved