标题:头文件"GradeBook.h",实现文件"GradeBook.cpp","main.cpp"在编译 ...
只看楼主
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
 问题点数:0 回复次数:4 
头文件"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
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:0 
首先 选择控制台程序
如是2008
可以 项目-属性-连接-系统-子系统选择

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



 
2010-09-11 14:29
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
hipwang88
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:36
注 册:2010-9-12
得分:0 
工程建设错误,你建的是WIN32 aplication的,应该建console下项目
2010-09-12 21:54
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
得分:0 
以下是引用hipwang88在2010-9-12 21:54:02的发言:

工程建设错误,你建的是WIN32 aplication的,应该建console下项目
就是这个原因!!!
2010-09-14 12:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-320124-1-1.html




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

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