| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 747 人关注过本帖
标题:[求助]C++ Primer中的一道练习(在线等)
收藏  订阅  推荐  打印 
haha188
Rank: 1
等级:新手上路
帖子:17
积分:270
注册:2007-10-26
[求助]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
积分:270
注册:2007-10-26

自己顶上去.
2007-11-18 19:22
neverDie
Rank: 2
等级:注册会员
威望:1
帖子:123
积分:1330
注册:2007-5-5

题目抄正确没哦!

2007-11-18 20:04
liujianlin
Rank: 1
等级:新手上路
帖子:34
积分:458
注册:2007-11-11

初学者,不知改的对吗
#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: 12Rank: 12Rank: 12
等级:版主
威望:14
帖子:3389
积分:34733
注册:2007-9-14

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


汇编.....
2007-11-18 20:43
随心
Rank: 12Rank: 12Rank: 12
来自:山东临沂
等级:版主
威望:8
帖子:2345
积分:23077
注册:2007-8-12

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


本人免费做C/C++/MFC/C#/JAVA / VB等毕业设计。QQ:77697907
2007-11-18 20:45
PcrazyC
Rank: 12Rank: 12Rank: 12
等级:版主
威望:28
帖子:5631
积分:57645
注册:2006-10-20

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

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


雁无留踪之意,水无取影之心
2007-11-18 21:55
PcrazyC
Rank: 12Rank: 12Rank: 12
等级:版主
威望:28
帖子:5631
积分:57645
注册:2006-10-20

不过最好是这样

#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
积分:174
注册:2007-10-27

LS的程序可以
2007-12-25 14:21
b629
Rank: 2
等级:注册会员
帖子:127
积分:1502
注册:2007-12-29

樓上的可以通過了? ???
2008-1-2 15:27
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.070121 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved