编译错误:找不到头文件,类和类接口的任何问题

时间:2012-01-10 23:07:28

标签: c++

我不理解编译中的错误。我没有看到任何语法问题。

错误:

/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

1 个答案:

答案 0 :(得分:0)

定义:string GradeBook :: displayMessage()。

声明:void displayMessage()

您不需要返回字符串。只需保留虚拟版。