头文件"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
从字面上看是建立不了链接吗?还是保存的格式有问题,感到迷茫,请各位前辈指点!