| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 653 人关注过本帖
标题:请问下面这段程序中的错误。。。(程序很短)
只看楼主 加入收藏
Garand
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-5-27
收藏
 问题点数:0 回复次数:7 
请问下面这段程序中的错误。。。(程序很短)

#include<iostream>
using namespace std;
class Student
{
public:
Student(int n,float s):num(n),score(s){}
void max(Student *p);
private:
int num;
float score;
};

void Student::max(Student *p)
{
float max_score=p[0].score;
for(int i=1;i<5;i++)
if(max_score<p[i].score)
{
max_score=p[i].score;
}

cout<<"maxscore="<<max_score;
}


int main()
{
void max(Student *p);
Student stu[5]={Student(101,34),Student(102,45),Student(103,22),Student(104,88),Student(105,44)};
Student *q=&stu[0];
max(q);
return 0;
}

程序链接过程中出错,经查,是因为在类Student的定义中有void max(Student *p);这个声明语句,那么请问大家一下,怎样在类定义中包含含有本类的声明语句呢?谢谢!

搜索更多相关主题的帖子: private include public 
2006-08-04 14:21
Garand
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-5-27
收藏
得分:0 

怎么没人知道吗?

2006-08-06 16:23
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
在你的這個文件頭部聲明一下
class Student; // forward declaration

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-06 18:01
Garand
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-5-27
收藏
得分:0 
按照楼上的方法还是不行啊
2006-08-06 21:09
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
對不起, 只是看了你對問題的描述, 現在才看到你在 main 中使用了
void max(Student *p); // 這是一個 Student 的成員, 不能像全局函數般聲明
max(p); // 這是調用 max 函數, max 是 Student 的一個公共方法, 前面應是一個 Student 實例

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-07 01:48
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
[CODE]#include<iostream>
using namespace std;

class Student
{
public:
Student(int n,float s):num(n),score(s){}
static void max(Student * p, int n);
private:
int num;
float score;
};


void Student::max(Student * p, int n)
{
float max_score=p[0].score;
for(int i=1;i<n;i++)
{
if(max_score<p[i].score)
{
max_score=p[i].score;
}
}

cout<<"maxscore="<<max_score;
}


int main()
{
Student stu[5]={Student(101,34),Student(102,45),Student(103,22),Student(104,88),Student(105,44)};
Student::max(stu, 5);
return 0;
}[/CODE]

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-08-07 04:34
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
一個靜態方法可不可以是一個常量方法呢...

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-07 04:39
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
Answer to your question: I don't think so.

PS:
Because I don't like write code in C code style, so I use here a static function. You can also write it as a friend function.

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-08-07 04:50
快速回复:请问下面这段程序中的错误。。。(程序很短)
数据加载中...
 
   



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

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