I am having problems with compiling some code in C++ which i am learing from Deitel and Deitels C++ how to program.
When trying to compile one of their examples i get the following errors
D:\Web Design\C++\C++ how to program\Fig03_15>g++ fig03_17.cpp
C:\DOCUME~1\SKILLI~1\LOCALS~1\Temp/ccUzb5iL.o:fig03_17.cpp:(.text+0x1aa): undefined reference to `GradeBook::GradeBook(std::string)'
C:\DOCUME~1\SKILLI~1\LOCALS~1\Temp/ccUzb5iL.o:fig03_17.cpp:(.text+0x283): undefined reference to `GradeBook::GradeBook(std::string)'
C:\DOCUME~1\SKILLI~1\LOCALS~1\Temp/ccUzb5iL.o:fig03_17.cpp:(.text+0x31a): undefined reference to `GradeBook::getCourseName()'
C:\DOCUME~1\SKILLI~1\LOCALS~1\Temp/ccUzb5iL.o:fig03_17.cpp:(.text+0x342): undefined reference to `GradeBook::getCourseName()'
C:\DOCUME~1\SKILLI~1\LOCALS~1\Temp/ccUzb5iL.o:fig03_17.cpp:(.text+0x48a): undefined reference to `GradeBook::setCourseName(std::string)'
C:\DOCUME~1\SKILLI~1\LOCALS~1\Temp/ccUzb5iL.o:fig03_17.cpp:(.text+0x521): undefined reference to `GradeBook::getCourseName()'
C:\DOCUME~1\SKILLI~1\LOCALS~1\Temp/ccUzb5iL.o:fig03_17.cpp:(.text+0x549): undefined reference to `GradeBook::getCourseName()'
collect2: ld returned 1 exit status
I am using 3 classes. They are as follows
//Fig 3.15: Gradebook.h
//GradeBook class definition presents the public interface
//Member functions appear in GradeBook.cpp
#include <string>
using std::string;
//GradeBook Class Definition
class GradeBook {
public:
GradeBook(string); //Constructor that initialises the GradeBook object
void setCourseName( string ); //function that sets the coursename
string getCourseName(); //function that gets the course name
void displayMessage(); //function that displays a welcome message
private:
string courseName; //coursename for this GradeBook
}; //end class GradeBook.
//Fig 3.16 GradeBook.cpp
//This has functions which the Gradebook class uses for validating data.
#include <iostream>
using std::cout;
using std::endl;
#include "GradeBook.h" //include definition of class GradeBook.
//Function that sets the course name and makes sure that it is no more than 25 characters
void GradeBook::setCourseName( string name ){
//If length of string name is equal to or less than 25 characters set the course name
if (name.length() <= 25)
courseName = name;
//If length of string name is greater than 25 characters return a notification
if (name.length() >25 ){
//Set the courseName to the first 25 characters of the string.
courseName = name.substr( 0,25 ); //Start at zero position of string and end at position 25
cout << "Name " << name << " exceeds maximum length (25) .\n"
<< "Limiting courseName to first 25 characters .\n" <<endl;
} //End if loop
} //End function setCourseName
//Function to get the course name
string GradeBook::getCourseName(){
return courseName;
}
void GradeBook::displayMessage()
{
cout <<"Welcome to the grade book for\n" <<getCourseName()
<< "!" << endl;
}
//Constructor initialises courseName with string supplied as an argument
GradeBook::GradeBook( string name ) {
setCourseName (name ); //validate and store coursename
}
//Fig 3.17 fig03_17.cpp
//Create and manipulate a GradeBook object; illustrate validation
#include <iostream>
using std::cout;
using std::endl;
#include "GradeBook.h" //include the class GradeBook.h.
#undef main
//Main Function
int main(){
//Create two gradebook objects
//gradeBook1 object name is too long
GradeBook gradeBook1("CS101 Introduction to programming in C++" );
GradeBook gradeBook2("CS102 C++ Data Structures");
//Display each GradeBooks courseName
cout << "gradeBook1's initial course name is " <<
gradeBook1.getCourseName() <<
"\ngradeBook2's initial course name i: " <<
gradeBook2.getCourseName() <<endl;
//Modify myGradeBooks courseName witha valid length string
gradeBook1.setCourseName("CS101 C++ Programming");
//Display courseName string for both Gradebook objects
cout << "\ngradeBook1's course name is " <<
gradeBook1.getCourseName() <<
"\ngradeBook2's course name is " <<
gradeBook2.getCourseName() <<endl;
return 0; //Successful termination of program
};
Anyone have any ideas, ive been trawling the net and cannot find any solutions.
I can only assume it is a parameter in my PATH as the text is pretty much a direct copy from the book