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

  • Автор темы Автор темы typak
  • Дата начала Дата начала
T

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 файл или я как то не пойму. Чота они у меня ни фига не компилируются ???

Подскажите где ошибка!!!!
 
Компилируешь неправильно. Сначала сделай компайлинг на каждый из файлов, потом сделай линкинг на все обьэктные файлы, которые сделает компайлер.
Плюс, качни IDE какой-нибудь, типа Eclipse, они автоматически делают проэкты, которые можно компилировать не вручную, а автоматом.

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

Первый 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 файл или я как то не пойму. Чота они у меня ни фига не компилируются ???

Подскажите где ошибка!!!!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!