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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
#1

Почему не работает класс Sales_item - C++

02.08.2014, 15:23. Просмотров 1907. Ответов 23
Метки нет (Все метки)

В книге С.Б. Липпмана C++ Вводный курс в главе 1.5 требуется добавить в программу класс Sales_item.h.Класс я скачал а вот добавить не получается....Пробовал и так и сяк .Выдаёт нету в проге и всё тут...Помогите пожалуйста .Пользуюсь wxDevC++ и MS visual 2010....

Добавлено через 1 час 8 минут
вот код:



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "Sales_item.h"
#include <iostream>
using namespace std;
 
int main()
{
    Sales_item total,trans;
    if (cin>>total){
        while(cin>>trans)
            if(trans.same_isbn(total))
                total=total+trans;
            else{
                cout<<total<<endl;
        total=trans;}
            cout<<total<<endl}
    else
    {
        cout<<"NO DATA";
        return -1;}
    return 0;
}

и код ошибки в wxDevC++(журнал компиляции):

Компилятор: Default GCC compiler
Building Makefile: "D:\RER\Makefile.win"
Выполнение make...
mingw32-make.exe -f "Makefile.win" all
g++.exe -c main.cpp -o Objects/MingW/main.o -I"D:/dev/Dev-Cpp/lib/gcc/mingw32/3.4.5/include" -I"D:/dev/Dev-Cpp/include/c++/3.4.5/backward" -I"D:/dev/Dev-Cpp/include/c++/3.4.5/mingw32" -I"D:/dev/Dev-Cpp/include/c++/3.4.5" -I"D:/dev/Dev-Cpp/include" -I"D:/dev/Dev-Cpp/" -I"D:/dev/Dev-Cpp/include/common/wx/msw" -I"D:/dev/Dev-Cpp/include/common/wx/generic" -I"D:/dev/Dev-Cpp/include/common/wx/html" -I"D:/dev/Dev-Cpp/include/common/wx/protocol" -I"D:/dev/Dev-Cpp/include/common/wx/xml" -I"D:/dev/Dev-Cpp/include/common/wx/xrc" -I"D:/dev/Dev-Cpp/include/common/wx" -I"D:/dev/Dev-Cpp/include/common"

In file included from main.cpp:3:
Sales_item.h:41:27: Version_test.h: No such file or directory
main.cpp: In function `int main()':
main.cpp:12: error: 'class Sales_item' has no member named 'same_isbn'

main.cpp:17: error: expected `;' before '}' token

mingw32-make.exe: *** [Objects/MingW/main.o] Error 1

Выполнение завершено
Compilation Failed. Make returned 2
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2014, 15:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему не работает класс Sales_item (C++):

Класс Sales_item - C++
Здравствуйте. Не выполняется код #include &lt;iostream&gt; #include &quot;Sales_item.h&quot; using namespace std; #include &lt;iostream&gt; ...

Стенли Липман - С++ Вводный курс(2007). Класс Sales_item.h - C++
В книге Стенли Липмана - С++ Вводный курс(2007) 4-е изд. - в одном месте, в главе 1.5, нужен файл Sales_item.h. Который должен находиться...

Стенли Липман, С++, файл Sales_item.h - C++
Работаю в среде программирования Сode Blocks. Читая книгу Стенли Липмана, я наткнулся на упражнение в разделе 1.5.1. Там объяснялось про...

Почему выводится в виде таблицы и почему не работает сортировка - C++
почему выводится в виде таблицы? почему не работает сортировка? и как туда можно вставить классы комнат? hotel.h #include...

Ошибка при подключении файла Sales_item.h из примера в книге - C++
Делаю маленькие шажки по книге &quot;C++ базовый курс 2014&quot; Скачал файл &quot;Sales_item.h.&quot;, добавил в проект. После этого выдает ошибку...

Класс Стек Stack. не работает класс исключений - C++
Здравствуйте! Решил проверить код на пригодность, но почему то класс исключений выскакивает на ошибке. Я никак не могу понять такие вещи...

23
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 22:39  [ТС] #16
Цитата Сообщение от Tulosba Посмотреть сообщение
Так о чем и речь. Нужно по заданию свою реализацию написать? Или взять готовую из книги?
Взять готовую и использовать.Там по заданию нужно сравнивать и складывать цены книг по ISBN.С помощью класса
Sales_item.h появляется новый тип данных и функция-член с помощью которой делается сравнение...НО КЛАСС не добавляется и там не написано как его добавить...
0
gru74ik
Эксперт CЭксперт С++
4197 / 1845 / 198
Регистрация: 20.02.2013
Сообщений: 4,990
Записей в блоге: 22
02.08.2014, 22:45 #17
Цитата Сообщение от Ed_Os Посмотреть сообщение
Что за код метода и какое тело?
Код - это набор символов. Буковки и циферьки. Команды, функции, переменные, классы, все вот эти фигурные и квадратные скобочки, точки с запятой, типы, константы. То есть всё то, что Вы пишите в своих wxDevC++ и MS visual 2010. Это и есть код.

Метод - это синоним слова функция (применительно к функциям, относящимся к какому-либо классу). Термин метод применяют в сочетании с термином класс, то есть так: метод класса.

Методы — это функции, которые могут выполнять какие-либо действия над данными (свойствами) класса.

Класс- это тип определённый пользователем.

Тело метода - это код, который находится в фигурных скобках прямо следом за именем этого метода в реализации этого метода.

Подучите уже, что ли, терминологию.
0
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 22:49  [ТС] #18
Цитата Сообщение от gru74ik Посмотреть сообщение
Код - это набор символов. Буковки и циферьки. Команды, функции, переменные, классы, все вот эти фигурные и квадратные скобочки, точки с запятой, типы, константы. То есть всё то, что Вы пишите в своих wxDevC++ и MS visual 2010. Это и есть код.

Метод - это синоним слова функция (применительно к функциям, относящимся к какому-либо классу). Термин метод применяют в сочетании с термином класс, то есть так: метод класса.

Методы — это функции, которые могут выполнять какие-либо действия над данными (свойствами) класса.

Класс- это тип определённый пользователем.

Тело метода - это код, который находится в фигурных скобках прямо следом за именем этого метода в реализации этого метода.

Подучите уже, что ли, терминологию.
Ну я стараюсь...Большинство из того что вы написали знал но за подсказку спасибо....И ещё, я пока о классах знаю лишь то что они позволяют добавить больше функции , типов и т.д. ... Я только первую главу прочёл.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.08.2014, 22:52 #19
Цитата Сообщение от Ed_Os Посмотреть сообщение
Но пока бьюсь над решением проблемы подключения класса.
Как я уже говорил ранее: "убрать строку (41)" и упростить main. Т.е. тоже убрать то, чего нет (вызов метода same_isbn как минимум).
Когда это будет сделано - можно продолжить разговор.
1
gru74ik
Эксперт CЭксперт С++
4197 / 1845 / 198
Регистрация: 20.02.2013
Сообщений: 4,990
Записей в блоге: 22
02.08.2014, 23:31 #20
Цитата Сообщение от Ed_Os Посмотреть сообщение
Но пока бьюсь над решением проблемы подключения класса.
Директивой #include (в переводе с английского - включить) вы подключаете так называемый хэдер (header), то есть заголовочный файл. Это такой кусок кода, который был написан умными дяденьками-программистами до Вас, за Вас и для Вас. Вы командуете компилятору вставить этот кусок кода в Ваш код. Что компилятор и делает. То есть, представьте себе, что у вас вместо коротенькой строчки #include "Sales_item.h" в код вашей программы вставлен весь код, который записан в том самом файлике Sales_item.h
А в нём, в файлике этом, своё включение, свой инклуд, который ссылается на несуществующий (в Вашем случае) файл Version_test.h, на что Вам сразу же и указали. И потом ещё раз указали. И потом в третий раз указали.
Вы уж как-то если спрашиваете, так хоть следуйте советам-то:
Цитата Сообщение от Tulosba Посмотреть сообщение
Как я уже говорил ранее: "убрать строку (41)" и упростить main. Т.е. тоже убрать то, чего нет (вызов метода same_isbn как минимум).
Добавлено через 19 минут
Цитата Сообщение от Ed_Os Посмотреть сообщение
Цитата Сообщение от Tulosba Посмотреть сообщение
Что-то реализации этого метода из приведенного кода не видно.
Всымысле?Вы имеете в виду в классе?
И опять возвращаемся к терминологии. У любого метода (мы уже с Вами знаем, что метод - это функция) должны быть:
  • прототип (объявление) - в котором Вы сообщаете компилятору о том, сколько и каких аргументов принимает Ваша функция и каков тип возвращаемого значения)
  • определение (реализация) - в которой Вы расписываете, что, как и с какими данными, собственно, функция делает
  • вызов - использование Вашей функции (например вызов внутри функции main)

Добавлено через 7 минут
P.S. Прочитайте у Стивена Праты 7 главу про функции и 10 главу про классы и раздельную компиляцию - львиная доля вопросов сама собой отпадёт.
0
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 23:31  [ТС] #21
Цитата Сообщение от gru74ik Посмотреть сообщение
Директивой #include (в переводе с английского - включить) вы подключаете так называемый хэдер (header), то есть заголовочный файл. Это такой кусок кода, который был написан умными дяденьками-программистами до Вас, за Вас и для Вас. Вы командуете компилятору вставить этот кусок кода в Ваш код. Что компилятор и делает. То есть, представьте себе, что у вас вместо коротенькой строчки #include "Sales_item.h" в код вашей программы вставлен весь код, который записан в том самом файлике Sales_item.h
А в нём, в файлике этом, своё включение, свой инклуд, который ссылается на несуществующий (в Вашем случае) файл Version_test.h, на что Вам сразу же и указали. И потом ещё раз указали. И потом в третий раз указали.
Вы уж как-то если спрашиваете, так хоть следуйте советам-то:


Добавлено через 19 минут

И опять возвращаемся к терминологии. У любого метода (мы уже с Вами знаем, что метод - это функция) должны быть:
  • прототип (объявление) - в котором Вы сообщаете компилятору о том, сколько и каких аргументов принимает Ваша функция и каков тип возвращаемого значения)
  • определение (реализация) - в которой Вы расписываете, что, как и с какими данными, собственно, функция делает
  • вызов - использование Вашей функции (например вызов внутри функции main)

Добавлено через 7 минут
P.S. Прочитайте у Праты 7 главу про функции и 10 главу про классы и раздельную компиляцию - львиная доля вопросов сама собой отпадёт.
Большоё спасибо за советы!Завтра прочитаю,попробую и отпишусь!
0
intern
15 / 15 / 6
Регистрация: 30.03.2014
Сообщений: 74
Завершенные тесты: 2
03.08.2014, 07:52 #22
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
1. Version_test.h есть в том же архиве, что и Sales_item.h. И необходим он для поддержки некоторых новшеств С++11, которые не реализованы в GCC 4.7.0 и VS2012. Вы можете использовать Sales_item.h без Version_test.h из GCC_pre_C11.zip или MS_pre_C11.zip.

2. Как уже писали выше, в классе Sales_item нет метода same_isbn. Поэтому замените
C++
1
if (trans.same_isbn(total))
на
C++
1
if (trans.isbn() == total.isbn())
3. В 15-ой строке main-а не хватает ;
1
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
03.08.2014, 11:01  [ТС] #23
Цитата Сообщение от intern Посмотреть сообщение
1. Version_test.h есть в том же архиве, что и Sales_item.h. И необходим он для поддержки некоторых новшеств С++11, которые не реализованы в GCC 4.7.0 и VS2012. Вы можете использовать Sales_item.h без Version_test.h из GCC_pre_C11.zip или MS_pre_C11.zip.

2. Как уже писали выше, в классе Sales_item нет метода same_isbn. Поэтому замените
C++
1
if (trans.same_isbn(total))
на
C++
1
if (trans.isbn() == total.isbn())
3. В 15-ой строке main-а не хватает ;
Ну чтож я таки нашёл Version_test.h и исправил первую ошибку.Вторую с .same_isbn и заменой на два .isbn() тоже
Так что проблема решена.Остался последний вопрос.Почему в книге описано именно с .same_isbn и без Version_test.h?Может проблема в том что книга 2007 а файлы Version_test.h и Sales_item.h 2012(т.к я пользуюсь четвертым изданием а вышло уже пятое(непереведённое))?
0
evsey92
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 5
30.07.2015, 03:01 #24
Тоже мучался с данной задачкой.

book1.isbn() выводит именно ISBN номер переменной book1, но при компиляции выдавало private:
std::string isbn;

залез в заготовочный файл sales_item.h и изменил фрагмент текста на следующий

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public:
    // operations on Sales_item objects
    std::string isbn;                                  
    double avg_price() const;
    bool same_isbn(const Sales_item &rhs) const
        { return isbn == rhs.isbn; }
    // default constructor needed to initialize members of built-in type
    Sales_item(): units_sold(0), revenue(0.0) { }
// private members as before
private:
    //std::string isbn;
    unsigned units_sold;
    double revenue;
 
};
0
30.07.2015, 03:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2015, 03:01
Привет! Вот еще темы с ответами:

Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает - C++
почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает. Имею в ввиду что сделал прогу которая меняет...

Почему не работает cin.clear() и как работает sync()? - C++
#include&lt;iostream&gt; #include&lt;cstring&gt; using namespace std; char*input(char*ch,int&amp;n){ cin.getline(ch,20); //cin.sync(); ...

Не могу понять почему не работает (или правильно не работает) - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #define N 5 #define M 3 void main() { int a; int i,j; cout&lt;&lt;&quot;nachalnya...

Почему в библиотеке не работает то, что спокойно работает в программе? - C++
День всем добрый! Я здесь решил собрать библиотеку для конструктора игр Game Maker. Хотел поэкспериментировать. Как всегда, у...


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

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

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