Форум программистов, компьютерный форум 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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
02.08.2014, 15:26     Почему не работает класс Sales_item #2
Цитата Сообщение от Ed_Os Посмотреть сообщение
#include "Sales_item.h"
этот файл у тебя есть?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
02.08.2014, 18:44     Почему не работает класс Sales_item #3
Sales_item.h подключает Version_test.h а его у Вас нет.
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 20:36  [ТС]     Почему не работает класс Sales_item #4
Цитата Сообщение от Issues Посмотреть сообщение
этот файл у тебя есть?
Issues,Файл Sales_item.h имею...
Zss,А что за Version_test.h в книге про него ничего.....

Добавлено через 44 секунды
Цитата Сообщение от zss Посмотреть сообщение
Sales_item.h подключает Version_test.h а его у Вас нет.
Zss,А что за Version_test.h в книге про него ничего.....
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.08.2014, 20:45     Почему не работает класс Sales_item #5
Ed_Os, ну так покажи, как выглядит содержимое sales items.h! Наверняка в нём и прописано требование versions_tеst.h !!!
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 21:09  [ТС]     Почему не работает класс Sales_item #6
Вот оно:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
 * This file contains code from "C++ Primer, Fifth Edition", by Stanley B.
 * Lippman, Josee Lajoie, and Barbara E. Moo, and is covered under the
 * copyright and warranty notices given in that book:
 * 
 * "Copyright (c) 2013 by Objectwrite, Inc., Josee Lajoie, and Barbara E. Moo."
 * 
 * 
 * "The authors and publisher have taken care in the preparation of this book,
 * but make no expressed or implied warranty of any kind and assume no
 * responsibility for errors or omissions. No liability is assumed for
 * incidental or consequential damages in connection with or arising out of the
 * use of the information or programs contained herein."
 * 
 * Permission is granted for this code to be used for educational purposes in
 * association with the book, given proper citation if and when posted or
 * reproduced.Any commercial use of this code requires the explicit written
 * permission of the publisher, Addison-Wesley Professional, a division of
 * Pearson Education, Inc. Send your request for permission, stating clearly
 * what code you would like to use, and in what specific way, to the following
 * address: 
 * 
 *     Pearson Education, Inc.
 *     Rights and Permissions Department
 *     One Lake Street
 *     Upper Saddle River, NJ  07458
 *     Fax: (201) 236-3290
*/ 
 
/* This file defines the Sales_item class used in chapter 1.
 * The code used in this file will be explained in 
 * Chapter 7 (Classes) and Chapter 14 (Overloaded Operators)
 * Readers shouldn't try to understand the code in this file
 * until they have read those chapters.
*/
 
#ifndef SALESITEM_H
// we're here only if SALESITEM_H has not yet been defined 
#define SALESITEM_H
 
#include "Version_test.h" 
 
// Definition of Sales_item class and related functions goes here
#include <iostream>
#include <string>
 
class Sales_item {
// these declarations are explained section 7.2.1, p. 270 
// and in chapter 14, pages 557, 558, 561
friend std::istream& operator>>(std::istream&, Sales_item&);
friend std::ostream& operator<<(std::ostream&, const Sales_item&);
friend bool operator<(const Sales_item&, const Sales_item&);
friend bool 
operator==(const Sales_item&, const Sales_item&);
public:
    // constructors are explained in section 7.1.4, pages 262 - 265
    // default constructor needed to initialize members of built-in type
#if defined(IN_CLASS_INITS) && defined(DEFAULT_FCNS)
    Sales_item() = default;
#else
    Sales_item(): units_sold(0), revenue(0.0) { }
#endif
    Sales_item(const std::string &book):
              bookNo(book), units_sold(0), revenue(0.0) { }
    Sales_item(std::istream &is) { is >> *this; }
public:
    // operations on Sales_item objects
    // member binary operator: left-hand operand bound to implicit this pointer
    Sales_item& operator+=(const Sales_item&);
    
    // operations on Sales_item objects
    std::string isbn() const { return bookNo; }
    double avg_price() const;
// private members as before
private:
    std::string bookNo;      // implicitly initialized to the empty string
#ifdef IN_CLASS_INITS
    unsigned units_sold = 0; // explicitly initialized
    double revenue = 0.0;
#else
    unsigned units_sold;  
    double revenue;       
#endif
};
 
// used in chapter 10
inline
bool compareIsbn(const Sales_item &lhs, const Sales_item &rhs) 
{ return lhs.isbn() == rhs.isbn(); }
 
// nonmember binary operator: must declare a parameter for each operand
Sales_item operator+(const Sales_item&, const Sales_item&);
 
inline bool 
operator==(const Sales_item &lhs, const Sales_item &rhs)
{
    // must be made a friend of Sales_item
    return lhs.units_sold == rhs.units_sold &&
           lhs.revenue == rhs.revenue &&
           lhs.isbn() == rhs.isbn();
}
 
inline bool 
operator!=(const Sales_item &lhs, const Sales_item &rhs)
{
    return !(lhs == rhs); // != defined in terms of operator==
}
 
// assumes that both objects refer to the same ISBN
Sales_item& Sales_item::operator+=(const Sales_item& rhs) 
{
    units_sold += rhs.units_sold; 
    revenue += rhs.revenue; 
    return *this;
}
 
// assumes that both objects refer to the same ISBN
Sales_item 
operator+(const Sales_item& lhs, const Sales_item& rhs) 
{
    Sales_item ret(lhs);  // copy (|lhs|) into a local object that we'll return
    ret += rhs;           // add in the contents of (|rhs|) 
    return ret;           // return (|ret|) by value
}
 
std::istream& 
operator>>(std::istream& in, Sales_item& s)
{
    double price;
    in >> s.bookNo >> s.units_sold >> price;
    // check that the inputs succeeded
    if (in)
        s.revenue = s.units_sold * price;
    else 
        s = Sales_item();  // input failed: reset object to default state
    return in;
}
 
std::ostream& 
operator<<(std::ostream& out, const Sales_item& s)
{
    out << s.isbn() << " " << s.units_sold << " "
        << s.revenue << " " << s.avg_price();
    return out;
}
 
double Sales_item::avg_price() const
{
    if (units_sold) 
        return revenue/units_sold; 
    else 
        return 0;
}
#endif
Я в C++ не силен и как можно понять учу его по книге так вот там написано просто вкинуть в каталог и прописать в коде через #include
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2014, 21:25     Почему не работает класс Sales_item #7
Для начала можно убрать строку (41)
C++
1
#include "Version_test.h"
А потом, что за
C++
1
trans.same_isbn(total)
в 10 строке первого кода?
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 21:53  [ТС]     Почему не работает класс Sales_item #8
Цитата Сообщение от Tulosba Посмотреть сообщение
Для начала можно убрать строку (41)
C++
1
#include "Version_test.h"
А потом, что за
C++
1
trans.same_isbn(total)
в 10 строке первого кода?
Попробую убрать
C++
1
#include "Version_test.h"
спасибо за совет .

А
C++
1
trans.same_isbn(total)
это использование функции-члена из класса Sales_item.h как описано в книге.
Попробую потом отпишусь.... но эт уже завтра...
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2014, 21:56     Почему не работает класс Sales_item #9
Цитата Сообщение от Ed_Os Посмотреть сообщение
это использование функции-члена из класса Sales_item.h как описано в книге.
Что-то реализации этого метода из приведенного кода не видно.
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 22:01  [ТС]     Почему не работает класс Sales_item #10
Цитата Сообщение от Tulosba Посмотреть сообщение
Что-то реализации этого метода из приведенного кода не видно.
Всымысле?Вы имеете в виду в классе?
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2014, 22:03     Почему не работает класс Sales_item #11
Ed_Os, код метода, т.е. тело где?
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 22:20  [ТС]     Почему не работает класс Sales_item #12
Цитата Сообщение от Tulosba Посмотреть сообщение
Ed_Os, код метода, т.е. тело где?
Что за код метода и какое тело?Извиняюсь за глупые вопросы...учусь...
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2014, 22:27     Почему не работает класс Sales_item #13
Цитата Сообщение от Ed_Os Посмотреть сообщение
Что за код метода и какое тело?Извиняюсь за глупые вопросы...учусь...
Прототип (объявление) функции:
C++
1
int f(); // тут мы просто говорим компилятору, что есть такая функция f(), которая не принимает параметров и возвращает целое (int). Но ничего не знаем как она реализована.
C++
1
2
3
4
int f() 
{   // вот тут начинается тело (реализация) функции f()
   return 42; 
} // а тут заканчивается
Переводя на Вашу тему - не видно реализацию функции same_isbn(). Что она делает, короче говоря.
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 22:30  [ТС]     Почему не работает класс Sales_item #14
Цитата Сообщение от Tulosba Посмотреть сообщение
Прототип (объявление) функции:
C++
1
int f(); // тут мы просто говорим компилятору, что есть такая функция f(), которая не принимает параметров и возвращает целое (int). Но ничего не знаем как она реализована.
C++
1
2
3
4
int f() 
{   // вот тут начинается тело (реализация) функции f()
   return 42; 
} // а тут заканчивается
Переводя на Вашу тему - не видно реализацию функции same_isbn(). Что она делает, короче говоря.
Ну вкратце понял...Эта фукция сравнивает два ISBN книг..Но ошибка то в том что нет файла....
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2014, 22:32     Почему не работает класс Sales_item #15
Цитата Сообщение от Ed_Os Посмотреть сообщение
Эта фукция сравнивает два ISBN книг..Но ошибка то в том что нет файла....
Так о чем и речь. Нужно по заданию свою реализацию написать? Или взять готовую из книги?
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 22:39  [ТС]     Почему не работает класс Sales_item #16
Цитата Сообщение от Tulosba Посмотреть сообщение
Так о чем и речь. Нужно по заданию свою реализацию написать? Или взять готовую из книги?
Взять готовую и использовать.Там по заданию нужно сравнивать и складывать цены книг по ISBN.С помощью класса
Sales_item.h появляется новый тип данных и функция-член с помощью которой делается сравнение...НО КЛАСС не добавляется и там не написано как его добавить...
gru74ik
Модератор
 Аватар для gru74ik
3069 / 1314 / 164
Регистрация: 20.02.2013
Сообщений: 3,749
Записей в блоге: 15
02.08.2014, 22:45     Почему не работает класс Sales_item #17
Цитата Сообщение от Ed_Os Посмотреть сообщение
Что за код метода и какое тело?
Код - это набор символов. Буковки и циферьки. Команды, функции, переменные, классы, все вот эти фигурные и квадратные скобочки, точки с запятой, типы, константы. То есть всё то, что Вы пишите в своих wxDevC++ и MS visual 2010. Это и есть код.

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

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

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

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

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

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

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

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

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

Подучите уже, что ли, терминологию.
Ну я стараюсь...Большинство из того что вы написали знал но за подсказку спасибо....И ещё, я пока о классах знаю лишь то что они позволяют добавить больше функции , типов и т.д. ... Я только первую главу прочёл.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2014, 22:52     Почему не работает класс Sales_item #19
Цитата Сообщение от Ed_Os Посмотреть сообщение
Но пока бьюсь над решением проблемы подключения класса.
Как я уже говорил ранее: "убрать строку (41)" и упростить main. Т.е. тоже убрать то, чего нет (вызов метода same_isbn как минимум).
Когда это будет сделано - можно продолжить разговор.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2014, 23:31     Почему не работает класс Sales_item
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
 Аватар для gru74ik
3069 / 1314 / 164
Регистрация: 20.02.2013
Сообщений: 3,749
Записей в блоге: 15
02.08.2014, 23:31     Почему не работает класс Sales_item #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 главу про классы и раздельную компиляцию - львиная доля вопросов сама собой отпадёт.
Yandex
Объявления
02.08.2014, 23:31     Почему не работает класс Sales_item
Ответ Создать тему
Опции темы

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