| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1404 人关注过本帖, 1 人收藏
标题:[求助]C++ Primer中的一道练习(在线等)
只看楼主 加入收藏
haha188
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-10-26
收藏(1)
 问题点数:0 回复次数:9 
[求助]C++ Primer中的一道练习(在线等)

/*
C++ Primer 第四版 第400页 12.6.1 习题
习题12.38
定义一个命名为Foo的类,具有单个int型数据成员。为该类定义一个构造函数,
接受一个int型值并用该值初始化数据成员。为该类定义一个函数,返回其数据成员的值。
习题12.39
给上题中定义的Foo类定义另一个Bar类。Bar类具有两个static数据成员:一个为int型,
另一个为Foo类型。
习题12.40
使用上面两题中定义的类,给Bar类增加一对成员:第一个成员命名为FooVal,返回
Bar类的Foo类型static成员的值;第二个成员命名为callsFooVal,保存FooVal调用
的次数。
*/
下面是我写的,可编译不过去,望高用给指点下

#include <iostream>
using namespace std;
/*定义Foo类*/
class Foo
{
public:
int back()
{
return x;
}
Foo(int n): x(n) {}
private:
int x;
};
/*定义Bar类*/
class Bar
{
public:
Foo FooVal();
int callsFooVal()
{
return count;
}
private:
static int count;
static Foo f;
};
/*定义Bar类的一个操作FooVal */
Foo Bar::FooVal()
{
int count = 0; //定义并初始化static数据成员count
++count;
return f;
}

/*主函数*/
int main()
{
Foo s(5);
cout << "x=" << s.back() <<endl;
Bar b;
b.FooVal();
cout << b.callsFooVal() << endl;
system("pause");
return 0;
}

[此贴子已经被作者于2007-11-18 19:35:32编辑过]

搜索更多相关主题的帖子: Primer Foo 定义 练习 
2007-11-18 18:52
haha188
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-10-26
收藏
得分:0 
自己顶上去.
2007-11-18 19:22
neverDie
Rank: 1
等 级:新手上路
威 望:1
帖 子:123
专家分:0
注 册:2007-5-5
收藏
得分:0 
题目抄正确没哦!

2007-11-18 20:04
liujianlin
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-11-11
收藏
得分:0 

初学者,不知改的对吗
#include <iostream>
using namespace std;
/*定义Foo类*/
class Foo
{
public:
int back()
{
return x;
}
Foo(int n) {x=n;}
private:
int x;
};
/*定义Bar类*/
class Bar
{
public:
Foo FooVal();
int callsFooVal()
{
return count;
}
private:
static int count;
static Foo f;
};
/*定义Bar类的一个操作FooVal */
int Bar::count = 0;
Foo Bar::f=0;
Foo Bar::FooVal()
{
//定义并初始化static数据成员count
++count;
return f;
}

/*主函数*/
int main()
{
Foo s(5);
cout << "x=" << s.back() <<endl;
Bar b;
b.FooVal();
cout << b.callsFooVal() << endl;
system("pause");
return 0;
}


小学文花,要学编程的话,最起码不喝不吃不睡才能赶上啊!
2007-11-18 20:33
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 

静态数据成员的初始化要在程序块外的任意位置


樱花大战,  有爱.
2007-11-18 20:43
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 

上面的程序在我这里编译通过


天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2007-11-18 20:45
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

看4楼吧,好像是静态变量初始化的问题

[此贴子已经被作者于2007-11-18 22:00:59编辑过]


雁无留踪之意,水无取影之心
2007-11-18 21:55
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

不过最好是这样

#include <iostream>
using namespace std;
/*定义Foo类*/
class Foo
{
public:
int back()
{
return x;
}
Foo(int n) {x=n;}
private:
int x;
};
/*定义Bar类*/
class Bar
{
public:
Foo FooVal();
int callsFooVal()
{
return count;
}
private:
static int count;
static Foo f;
};
/*定义Bar类的一个操作FooVal */
int Bar::count = 0;
Foo Bar::f(0);
Foo Bar::FooVal()
{
++count;
return f;
}

/*主函数*/
int main()
{
Foo s(5);
cout << "x=" << s.back() <<endl;
Bar b;
b.FooVal();
cout << b.callsFooVal() << endl;
system("pause");
return 0;
}


雁无留踪之意,水无取影之心
2007-11-18 22:04
pzj636484
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-10-27
收藏
得分:0 
LS的程序可以
2007-12-25 14:21
b629
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2007-12-29
收藏
得分:0 
樓上的可以通過了? ???
2008-01-02 15:27
快速回复:[求助]C++ Primer中的一道练习(在线等)
数据加载中...
 
   



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

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