| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1841 人关注过本帖
标题:头文件"GradeBook.h",实现文件"GradeBook.cpp","main.cpp"在编译 ...
取消只看楼主 加入收藏
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
收藏
 问题点数:0 回复次数:2 
头文件"GradeBook.h",实现文件"GradeBook.cpp","main.cpp"在编译
大家好,最近刚开始接触接口与实现。
我用的是dev c++,编写了头文件GradeBook.H,实现文件GradeBook.cpp,主函数main.cpp文件。
在练习时遇到一个问题,整个过程如下-
1.    新建源代码,保存为GradeBook.h,编写代码:
#include<string>                 //预处理
using std::string;   

class GradeBook             //声明类
{
public:
       GradeBook( string );    //声明构造函数,包含的形参是string类型
       void setCourseName( string );      //声明设置函数, 不需返回值
       string getCourseName();     //声明获取函数,返回字符串
       void displayMessage();     //成员函数
       void determineClassAverage();     //成员函数
private:
       string courseName;   //声明数据成员
};      
      
2.    新建源代码,保存为GradeBook.cpp,编写代码:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include "GradeBook.h"     //包含GradeBook类的头文件

GradeBook::GradeBook( string name )   //定义构造函数 , 注意二元访问符
{
     setCourseName( name );
}

void GradeBook::setCourseName( string name )   //定义设置函数
{
     if ( name.length() <= 25 )     //用函数限制名字长度
          courseName = name;        //将形参的值赋给数据成员
     else
     {   //语句块需要用花括号
       courseName = name.substr( 0,25 );   //用函数截取前25个字母为课程名字
       cout << " NAME \"" << name << "\" execeeds maximum length (25).\n"
            << "limiting courseName to first 25 characters.\n" << endl;
     }   //if ...else 语句结束
}

string GradeBook::getCourseName()
{
       return courseName;
}

void GradeBook::displayMessage()   //显示欢迎信息
{
     cout << " welcome to the gradebook fot \n " << getCourseName( ) << "!\n"
       << endl;
}  

void GradeBook::determineClassAverage()
{
     int total;   //局部变量-总成绩
     int gradeCounter;    //局部变量-计数器
     int grade;   //局部变量-用户输入的成绩
     int average;   //局部变量-平均成绩
     
     //初始化变量
     total = 0;
     gradeCounter = 1;     //知道循环次数时候,使用计数器
     
     while( gradeCounter <=10 )
     {
         cout << "enter grade:";
         cin >> grade;
         total = total + grade;
         gradeCounter = gradeCounter +1;
     }
     
     average = total / 10;     //整形相除得整形
     
     cout << " \nTotal of all 10 grade is " << total << endl;
     cout << " Class average is " << average << endl;
}

3.    新建源代码,保存为main.cpp,编写代码:
#include "GradeBook.h"

int main()
{
    GradeBook myGradeBook( "T-MAC&VC");
   
    myGradeBook.displayMessage();
    myGradeBook.determineClassAverage();
   
    system("pause");
    return 0;
}

代码应该没错,但是通过不了编译,有GradeBook.cpp以及main.cpp文件有如下错误:
    [Linker error] undefined reference to `WinMain@16'
    ld returned 1 exit status

[Linker error] undefined reference to `GradeBook::GradeBook(std::string)'
  [Linker error] undefined reference to `GradeBook::displayMessage()'
  [Linker error] undefined reference to `GradeBook::determineClassAverage()'
  ld returned 1 exit status

从字面上看是建立不了链接吗?还是保存的格式有问题,感到迷茫,请各位前辈指点!
搜索更多相关主题的帖子: 文件 main GradeBook cpp 
2010-09-11 13:48
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
收藏
得分:0 
以下是引用hahayezhe在2010-9-11 14:29:27的发言:

首先 选择控制台程序
如是2008
可以 项目-属性-连接-系统-子系统选择

其次 请将
#include
using std::cout;
using std::cin;
using std::endl; 声明到你的.h文件里 并加一个 using std::string



 
我已经加了using std::string啦,而且我用的是DEV啊,不是VC...
2010-09-11 18:12
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
收藏
得分:0 
以下是引用hipwang88在2010-9-12 21:54:02的发言:

工程建设错误,你建的是WIN32 aplication的,应该建console下项目
就是这个原因!!!
2010-09-14 12:04
快速回复:头文件"GradeBook.h",实现文件"GradeBook.cpp","main.cpp"在编译 ...
数据加载中...
 
   



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

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