Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 15:23     Почему не работает класс Sales_item #1
В книге С.Б. Липпмана 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
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2014, 15:23     Почему не работает класс Sales_item
Посмотрите здесь:

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


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

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

Добавлено через 7 минут
P.S. Прочитайте у Праты 7 главу про функции и 10 главу про классы и раздельную компиляцию - львиная доля вопросов сама собой отпадёт.
Большоё спасибо за советы!Завтра прочитаю,попробую и отпишусь!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
intern
 Аватар для intern
15 / 15 / 6
Регистрация: 30.03.2014
Сообщений: 67
Завершенные тесты: 1
03.08.2014, 07:52     Почему не работает класс Sales_item #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-а не хватает ;
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
03.08.2014, 11:01  [ТС]     Почему не работает класс Sales_item #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(т.к я пользуюсь четвертым изданием а вышло уже пятое(непереведённое))?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2015, 03:01     Почему не работает класс Sales_item
Еще ссылки по теме:

Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает C++
Класс Sales_item C++
C++ Почему выводится в виде таблицы и почему не работает сортировка

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

Или воспользуйтесь поиском по форуму:
evsey92
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 5
30.07.2015, 03:01     Почему не работает класс Sales_item #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;
 
};
Yandex
Объявления
30.07.2015, 03:01     Почему не работает класс Sales_item
Ответ Создать тему
Опции темы

Текущее время: 06:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru