Не Получается Создать Интерфейс Класса

Тема в разделе "Общие вопросы по С и С++", создана пользователем typak, 17 апр 2012.

  1. typak

    typak Гость

    Есть три файла:

    Первый GradeBook.h

    Код (C++):
    #include <string>
    using std::string;

    class GradeBook
    {
    public:
    GradeBook(string);
    void setCourseName(string);
    string getCourseName();
    void displayMessage();
    private:
    string courseName;
    };
    Второй GradeBook.cpp

    Код (C++):
    #include <iostream>
    using std::cout;
    using std::endl;

    #include "GradeBook.h"

    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;  
    }
    Третий файл fig03_13.cpp (клиентский код)

    Код (C++):
    #include <iostream>
    using std::cout;
    using std::endl;

    #include "GradeBook.h"

    int main()
    {
    GradeBook gradeBook1("CS101 Introduction to C++ Programming");
    GradeBook gradeBook2("CS102 Data Structures in C++");

    cout <<"gradeBook1 created for: "<<gradeBook1.getCourseName()
    <<"\ngradeBook2 created for: "<<gradeBook2.getCourseName()
    <<endl;
    return 0;
    }
    Использую компилятор dev-C++ компилирую клиентский код файл fig03_13.cpp не компилируется выдает ошибку
    [Linker error] undefined reference to `GradeBook::GradeBook(std::string)'
    [Linker error] undefined reference to `GradeBook::GradeBook(std::string)'
    [Linker error] undefined reference to `GradeBook::getCourseName()'
    [Linker error] undefined reference to `GradeBook::getCourseName()'
    ld returned 1 exit status


    изменяю в этом файле строку #include "GradeBook.h" на #include "GradeBook.cpp"
    все нормально компилируется хотя в листинге написано что должно стоять GradeBook.h....?

    пытаюсь компилировать файл GradeBook.cpp исходный код класса опять же выдает ошибку:
    [Linker error] undefined reference to `WinMain@16'
    ld returned 1 exit status


    В учебнике ясно написано, что программисты могут создавать классы оставляя тока интерфейс класса то есть заголовочный файл и компилируя в объектный код сами функции наверно в exe файл или я как то не пойму. Чота они у меня ни фига не компилируются ???

    Подскажите где ошибка!!!!
     
  2. rlib

    rlib New Member

    Регистрация:
    25 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Компилируешь неправильно. Сначала сделай компайлинг на каждый из файлов, потом сделай линкинг на все обьэктные файлы, которые сделает компайлер.
    Плюс, качни IDE какой-нибудь, типа Eclipse, они автоматически делают проэкты, которые можно компилировать не вручную, а автоматом.

     
Загрузка...

Поделиться этой страницей