| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 878 人关注过本帖
标题:刚学 组合类的构造函数。Whole :: Print 函数成员中的最后三个 cout 报错
只看楼主 加入收藏
aa495939792
Rank: 2
等 级:论坛游民
帖 子:8
专家分:19
注 册:2013-4-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
刚学 组合类的构造函数。Whole :: Print 函数成员中的最后三个 cout 报错
[b][b]#include <iostream.h>
const int i = 0;
class Part
{
public :
    Part (int x);
    void Print ();
private :
    int Partval;
};
class Whole
{
public :
    Whole (int i,int j,int k);
    void Print ();
private :
    Part one;
    Part two;
    Part three;
    int date1;
    int date2;
    int date3;
};
Part :: Part (int x)
{
    Partval = x;
    cout << " Part 类的私有成员 Partval 构造完成 ;  Partval = " << Partval << endl << endl;
}
Whole :: Whole (int i,int j,int k) : one (i),two (j),three (k)
{
    date1 = i;
    date2 = j;
    date3 = k;
}
void main()
{
    Part PartA (1);
    Whole WholeB (2,3,4);
    PartA.Print ();
    WholeB.Print ();
}
void Part :: Print ()
{
    cout << "Partval = " << Partval << endl << endl;
}
void Whole :: Print ()
{
    cout << " Whole 类的私有成员 date1 date2 date3 分别构造完成;" << endl;
    cout << "date1 = " << date1 << " ";
    cout << "date2 = " << date2 << " ";
    cout << "date3 = " << date3 << endl << endl;
    cout << "同时 Part 类成员 ont two date 也构造完成" << endl;
    cout << "Partone = " << one << " ";
    cout << "Parttwo = " << two << " ";
    cout << "Parthree = " << three << endl;
}




如果将最后三个 cout 随便输出个别的什么,代码就通过了。比如 cout << "sdf" << endl;  但是写这三个就不行,刚学 组合类构造函数,请大家帮帮小弟。
搜索更多相关主题的帖子: private include public 
2013-04-08 20:36
oxeno
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:19
注 册:2013-4-8
收藏
得分:7 
针对Part,重载一下 operator<<

在Part的private:  中加入

    friend ostream& operator<< (ostream& os,const Part& part)
    {
            return os<<part.Partval;
    }

*********************************************
输出结果:

Part 类的私有成员 Partval 构造完成 ;  Partval = 1

 Part 类的私有成员 Partval 构造完成 ;  Partval = 2

 Part 类的私有成员 Partval 构造完成 ;  Partval = 3

 Part 类的私有成员 Partval 构造完成 ;  Partval = 4

Partval = 1

 Whole 类的私有成员 date1 date2 date3 分别构造完成;
date1 = 2 date2 = 3 date3 = 4

同时 Part 类成员 ont two date 也构造完成
Partone = 2 Parttwo = 3 Parthree = 4

[ 本帖最后由 oxeno 于 2013-4-8 20:56 编辑 ]
2013-04-08 20:53
aa495939792
Rank: 2
等 级:论坛游民
帖 子:8
专家分:19
注 册:2013-4-8
收藏
得分:0 
回复 2楼 oxeno
你说的是 加入友员?....我了个擦,老师目前就教了我们重载函数,重载操作符,我还是真没听过,你能跟我详细点解释下么。
2013-04-08 21:03
oxeno
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:19
注 册:2013-4-8
收藏
得分:0 
标准库中的  << 运算符 不支持你直接输出你的 类型 Part  的对象,需要你重载以下  输出运算符<< 来支持直接输出  ,operator<<  其实就是一个函数 ,等于叫你重载函数,你研究一下重载<<之后的参数表,和返回值
2013-04-08 21:11
oxeno
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:19
注 册:2013-4-8
收藏
得分:0 
当然你也可以  再在Whole中定义一个函数 专门用来输出 one.Partval  two.Partval  three.Partval
2013-04-08 21:13
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:7 
cout << " Whole 类的私有成员 date1 date2 date3 分别构造完成;" << endl;

你都说了是私有成员,怎么可能取得到?
PS:友元是一个很变态的东西...跟走私偷渡一样

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-08 21:13
oxeno
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:19
注 册:2013-4-8
收藏
得分:0 
回复 6楼 peach5460
你说的部分是Whole 的成员函数.可取私有.
2013-04-08 21:16
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用oxeno在2013-4-8 21:16:52的发言:

你说的部分是Whole 的成员函数.可取私有.

呀,没仔细看,我以为cout写在main里面在咧
我看你在用友元,我以为是为了取私有成员

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-08 21:19
oxeno
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:19
注 册:2013-4-8
收藏
得分:0 
回复 8楼 peach5460
之前一看也诧异了一下,main在中间...走私私货的确猥琐...
2013-04-08 21:20
wuwanghua
Rank: 1
等 级:新手上路
帖 子:1
专家分:7
注 册:2013-4-6
收藏
得分:7 
回复 5楼 oxeno
它们在whole中是真的私有了,还能调用得动么!!
2013-04-08 23:57
快速回复:刚学 组合类的构造函数。Whole :: Print 函数成员中的最后三个 cout 报 ...
数据加载中...
 
   



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

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