С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nihilo
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 30
#1

Не могу найти ошибку - C++

10.03.2014, 12:20. Просмотров 342. Ответов 8
Метки нет (Все метки)

Всем привет. НАчал читать учебник Дейтеля (5е издание), дошел до момента "отделение интерфейса от реализации", и в примерах, которые прилагаются к учебнику, явно присутствует ошибка, но найти не могу, ибо в самом учебнике код точно такой же как в приложенных примерах. Прошу помочь найти где ошибка:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Fig. 3.13: fig03_13.cpp
// GradeBook class demonstration after separating
// its interface from its implementation.
#include <iostream>
using std::cout;
using std::endl;
 
#include "GradeBook.h" // include definition of class GradeBook
 
// 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;
   return 0; // indicate successful termination
} // end main


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Fig. 3.11: GradeBook.h
// GradeBook class definition. This file presents GradeBook's public
// interface without revealing the implementations of GradeBook's member
// functions, which are defined in GradeBook.cpp.
#include <string> // class GradeBook uses C++ standard string class
using std::string;
 
// 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
}; // end class GradeBook


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Fig. 3.12: GradeBook.cpp
// GradeBook member-function definitions. This file contains
// implementations of the member functions prototyped in GradeBook.h.
#include <iostream>
using std::cout; 
using std::endl;
 
#include "GradeBook.h" // include definition of class GradeBook
 
// 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::getCourseName()
{
   return courseName; // return object's courseName
} // end function getCourseName
 
// display a welcome message to the GradeBook user
void GradeBook::displayMessage()
{
   // call getCourseName to get the courseName
   cout << "Welcome to the grade book for\n" << getCourseName() 
      << "!" << endl;
} // end function displayMessage
При попытке компиляции получаю:
D:\Programming\Как программировать на С++ 5 издание с примерами\ch03\Fig03_11_13\fig03_13.o:fig03_13.cpp: (.text+0x87): undefined reference to `GradeBook::GradeBook(std::string)'
D:\Programming\Как программировать на С++ 5 издание с примерами\ch03\Fig03_11_13\fig03_13.o:fig03_13.cpp: (.text+0xe8): undefined reference to `GradeBook::GradeBook(std::string)'
D:\Programming\Как программировать на С++ 5 издание с примерами\ch03\Fig03_11_13\fig03_13.o:fig03_13.cpp: (.text+0x11d): undefined reference to `GradeBook::getCourseName()'
D:\Programming\Как программировать на С++ 5 издание с примерами\ch03\Fig03_11_13\fig03_13.o:fig03_13.cpp: (.text+0x137): undefined reference to `GradeBook::getCourseName()'
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2014, 12:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу найти ошибку (C++):

Найти слова, повторяющиеся более одного раза, не могу найти ошибку - C++
#include &lt;iostream&gt; using namespace std; void obr1(char **s, char **mas, int n, int m) { int i; int k; char *tm; for(i...

Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку) - C++
// Заданы матрицы X(8;4),Y(5;5),Z(6;9). // Для каждой из матриц определить строку, в которой находится наименьшее // количество...

Не могу найти ошибку - C++
Не могу найти ошибку. Вод код #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;clocale&gt; int sum (int a, int b) { int c; c...

Не могу найти ошибку... - C++
минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы. Я ввожу матрицу 1 2 3 4 5 6 7 8 9, т.е. минимум...

Не могу найти ошибку - C++
Осуществить циклический сдвиг квадратной матрицы размерности NxN вправо на N элементов таким образом: элементы 1-й строки сдвигаются в...

Не могу найти ошибку - C++
Здравствуйте,не могу понять в чем ошибка подскажите пожалуйста #include &quot;stdafx.h&quot; #include &lt;time.h&gt; #include &lt;cstdlib&gt; ...

8
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,010
Завершенные тесты: 1
10.03.2014, 12:39 #2
А Вы действительно собрали все 3 файла в один проект?
1
Nihilo
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 30
10.03.2014, 12:50  [ТС] #3
zss
Дело в том, что я делаю все "по тексту", то есть сказано запустить-запускаю, даже ничего не изменял. В тексте сказано, что должно работать ни о чем больше речи не идет. Вот я и задаюсь вопросом-может чего-то я упустил. В проект не собирал ничего, ибо все файлы лежат в одном месте и(по умолчанию), якобы должно все работать.
0
Progers
New to C++
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
10.03.2014, 12:57 #4
Nihilo, Вы в какой IDE это делайте? У меня всё компилируется нормально.
QT SDK, компилятор MinGW.
1
iifat
2283 / 1438 / 114
Регистрация: 05.06.2011
Сообщений: 3,966
10.03.2014, 13:00 #5
Явно нет. Nihilo, из каждого .cpp-файла получается .o; в одном лежит программа, в другом функции-члены класса. Судя по сообщениям об ошибках, вместе ты их не собрал.

Добавлено через 46 секунд
Цитата Сообщение от Nihilo Посмотреть сообщение
сказано запустить-запускаю
Что именно запускаешь? Воспроизведи сюда.
1
Nihilo
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 30
10.03.2014, 13:15  [ТС] #6
IDE Code::Blocks13.12, запускаю это:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using std::cout;
using std::endl;
 
#include "GradeBook.h" // include definition of class GradeBook
 
// 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;
   return 0;
Добавлено через 9 минут
Все 3 файла лежат в одном месте fig03_13.cpp(исходный, его и запускаю), GradeBook(исходный).cpp и GradeBook заголовок.
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
10.03.2014, 13:32 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Nihilo, надо создать проект (консольный подойдет), если еще не создал, и добавить туда все три файла.
1
Progers
New to C++
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
10.03.2014, 15:49 #8
Code::Blocks У меня там тоже, в некоторых проектах не подключались заголовки нормально. Советую вам использовать другую среду.
0
iifat
2283 / 1438 / 114
Регистрация: 05.06.2011
Сообщений: 3,966
10.03.2014, 17:05 #9
Ну, в данном-то случае дело, похоже. не в заголовках. Ошибки линковки, не подключен модуль с реализацией класса.
0
10.03.2014, 17:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2014, 17:05
Привет! Вот еще темы с ответами:

Не могу найти ошибку! - C++
Пробую что-то вычудить..... не могу найти ошибку (просто интересно) #include &lt;iostream&gt; using namespace std; ...

Не могу найти ошибку! - C++
Вобщем вот программа. #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;iomanip.h&gt; #include &lt;conio.h&gt; int main () { ...

Не могу найти ошибку - C++
Ребята, в общем, пишу код более-менее нормального меню, переключаться вверх/вниз с помощью стрелок! Не надо говорить про аппликацию, это...

Не могу найти ошибку! - C++
Написал функцию &quot;Сортировка пузырьком&quot;, но почему то в конце функции выводит те же значения, что были изначальноO_o вот код: #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.