gtcoffee
October 24th, 2007, 03:10 AM
i got the problem to compile these three files "GradeBook.h , GradeBook.cpp , and main.cpp ", but it can compiled by using VC++, How come?
g++ main.cpp -o main
/tmp/ccbwwwox.o: In function `main':
main.cpp:(.text+0xb7): undefined reference to `GradeBook::GradeBook(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
main.cpp:(.text+0x13d): undefined reference to `GradeBook::GradeBook(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
main.cpp:(.text+0x176): undefined reference to `GradeBook::displayMessage()'
collect2: ld returned 1 exit status
GradeBook.h
#include <string>
using namespace std;
class GradeBook
{
public:
GradeBook( string );
void setCourseName( string );
string getCourseName();
void displayMessage();
private:
string courseName;
};
GradeBook.cpp
#include <iostream>
#include <string>
#include "GradeBook.h"
using namespace std;
GradeBook::GradeBook(string name)
{
setCourseName(name);
}
void GradeBook::setCourseName(string name)
{
courseName = name;
string GradeBook::getCourseName()
{
return courseName;
}
void GradeBook::displayMessage()
{
cout << "Welcome to the grade book for\n" << getCourseName()
<< "!" << endl;
}
main.cpp
#include <iostream>
#include "GradeBook.h"
using namespace std;
int main()
{
GradeBook gb1("CSC101 Introduction to programming in C++");
GradeBook gb2("CSC102 Data Structures");
gb1.displayMessage();
return 0;
}
g++ main.cpp -o main
/tmp/ccbwwwox.o: In function `main':
main.cpp:(.text+0xb7): undefined reference to `GradeBook::GradeBook(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
main.cpp:(.text+0x13d): undefined reference to `GradeBook::GradeBook(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
main.cpp:(.text+0x176): undefined reference to `GradeBook::displayMessage()'
collect2: ld returned 1 exit status
GradeBook.h
#include <string>
using namespace std;
class GradeBook
{
public:
GradeBook( string );
void setCourseName( string );
string getCourseName();
void displayMessage();
private:
string courseName;
};
GradeBook.cpp
#include <iostream>
#include <string>
#include "GradeBook.h"
using namespace std;
GradeBook::GradeBook(string name)
{
setCourseName(name);
}
void GradeBook::setCourseName(string name)
{
courseName = name;
string GradeBook::getCourseName()
{
return courseName;
}
void GradeBook::displayMessage()
{
cout << "Welcome to the grade book for\n" << getCourseName()
<< "!" << endl;
}
main.cpp
#include <iostream>
#include "GradeBook.h"
using namespace std;
int main()
{
GradeBook gb1("CSC101 Introduction to programming in C++");
GradeBook gb2("CSC102 Data Structures");
gb1.displayMessage();
return 0;
}