我不明白編譯中的錯誤。我沒有看到任何語法問題。編譯錯誤:找不到頭,類和類接口的任何問題
錯誤:
/dev/shm/ccEF5pIa.o: In function `main':
fig03_13.cc:(.text+0x45): undefined reference to `GradeBook::GradeBook(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
fig03_13.cc:(.text+0x9d): undefined reference to `GradeBook::GradeBook(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
fig03_13.cc:(.text+0xce): undefined reference to `GradeBook::getCourseName()'
fig03_13.cc:(.text+0xe1): undefined reference to `GradeBook::getCourseName()'
collect2: ld returned 1 exit status
GradeBook.cc:21:8: error: prototype for 'std::string GradeBook::displayMessage()' does not match any in class 'GradeBook'
GradeBook.h:15:8: error: candidate is: void GradeBook::displayMessage()
這是GradeBook.h
#include <string> // class GradeBook uses C++ standard string class
using namespace std;
// GradeBook class definition
class GradeBook
{
public:
GradeBook(string); // constructor that initializes courseName
void setCourseName(string); // function that sets the course name
string getCourseName(); // function that gets the course name
void displayMessage(); // function that displays a welcome message
private:
string courseName; // course name for this GradeBook
};
GradeBook.cc
#include <iostream>
#include "GradeBook.h" // include definition of class GradeBook
using namespace std;
// constructor initializes courseName with string supplied as argument
GradeBook::GradeBook(string name)
{
setCourseName(name); // call set function to initialize courseName
} // end GradeBook constructor
// function to set the course name
void GradeBook::setCourseName(string name)
{
courseName = name; // store the course name in the object
} // end function setCourseName
// function to get the course name
string GradeBook::displayMessage()
{
// call getCourseName to get the courseName
cout << "welcome to the grade book for\n" << getCourseName() << "!" << endl;
} // end function displayMessage
fig03_13.cc
#include <iostream>
#include "GradeBook.h" // include definition of class GradeBook
using namespace std;
// function main begins program execution
int main() {
// create two GradeBook objects
GradeBook gradeBook1("CS101 Introduction to C++ Programming");
GradeBook gradeBook2("CS102 Data Structures in C++");
// display initial value of courseName for each GradeBook
cout << "gradeBook1 created for course: " << gradeBook1.getCourseName()
<< "\ngradeBook2 created for course: " << gradeBook2.getCourseName() << endl;
} // end main
聲明:'void displayMessage();'。定義:'字符串GradeBook :: displayMessage()'。看到問題了嗎? (「getCourseName」的定義在哪裏?) – ildjarn 2012-01-10 23:11:01