Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
1

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

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

Author24 — интернет-сервис помощи студентам
В книге С.Б. Липпмана 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2014, 15:23
Ответы с готовыми решениями:

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

Стенли Липман - С++ Класс Sales_item.h
сама программа #include &lt;iostream&gt; #include &quot;Sales_item.h&quot; using namespace std; int main()...

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

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

23
433 / 368 / 149
Регистрация: 06.08.2012
Сообщений: 961
02.08.2014, 15:26 2
Цитата Сообщение от Ed_Os Посмотреть сообщение
#include "Sales_item.h"
этот файл у тебя есть?
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
02.08.2014, 18:44 3
Sales_item.h подключает Version_test.h а его у Вас нет.
0
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 20:36  [ТС] 4
Цитата Сообщение от Issues Посмотреть сообщение
этот файл у тебя есть?
Issues,Файл Sales_item.h имею...
Zss,А что за Version_test.h в книге про него ничего.....

Добавлено через 44 секунды
Цитата Сообщение от zss Посмотреть сообщение
Sales_item.h подключает Version_test.h а его у Вас нет.
Zss,А что за Version_test.h в книге про него ничего.....
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
02.08.2014, 20:45 5
Ed_Os, ну так покажи, как выглядит содержимое sales items.h! Наверняка в нём и прописано требование versions_tеst.h !!!
0
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 21:09  [ТС] 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
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2014, 21:25 7
Для начала можно убрать строку (41)
C++
1
#include "Version_test.h"
А потом, что за
C++
1
trans.same_isbn(total)
в 10 строке первого кода?
0
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 21:53  [ТС] 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 как описано в книге.
Попробую потом отпишусь.... но эт уже завтра...
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2014, 21:56 9
Цитата Сообщение от Ed_Os Посмотреть сообщение
это использование функции-члена из класса Sales_item.h как описано в книге.
Что-то реализации этого метода из приведенного кода не видно.
0
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 22:01  [ТС] 10
Цитата Сообщение от Tulosba Посмотреть сообщение
Что-то реализации этого метода из приведенного кода не видно.
Всымысле?Вы имеете в виду в классе?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2014, 22:03 11
Ed_Os, код метода, т.е. тело где?
0
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 22:20  [ТС] 12
Цитата Сообщение от Tulosba Посмотреть сообщение
Ed_Os, код метода, т.е. тело где?
Что за код метода и какое тело?Извиняюсь за глупые вопросы...учусь...
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2014, 22:27 13
Цитата Сообщение от Ed_Os Посмотреть сообщение
Что за код метода и какое тело?Извиняюсь за глупые вопросы...учусь...
Прототип (объявление) функции:
C++
1
int f(); // тут мы просто говорим компилятору, что есть такая функция f(), которая не принимает параметров и возвращает целое (int). Но ничего не знаем как она реализована.
C++
1
2
3
4
int f() 
{   // вот тут начинается тело (реализация) функции f()
   return 42; 
} // а тут заканчивается
Переводя на Вашу тему - не видно реализацию функции same_isbn(). Что она делает, короче говоря.
0
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 22:30  [ТС] 14
Цитата Сообщение от Tulosba Посмотреть сообщение
Прототип (объявление) функции:
C++
1
int f(); // тут мы просто говорим компилятору, что есть такая функция f(), которая не принимает параметров и возвращает целое (int). Но ничего не знаем как она реализована.
C++
1
2
3
4
int f() 
{   // вот тут начинается тело (реализация) функции f()
   return 42; 
} // а тут заканчивается
Переводя на Вашу тему - не видно реализацию функции same_isbn(). Что она делает, короче говоря.
Ну вкратце понял...Эта фукция сравнивает два ISBN книг..Но ошибка то в том что нет файла....
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2014, 22:32 15
Цитата Сообщение от Ed_Os Посмотреть сообщение
Эта фукция сравнивает два ISBN книг..Но ошибка то в том что нет файла....
Так о чем и речь. Нужно по заданию свою реализацию написать? Или взять готовую из книги?
0
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
02.08.2014, 22:39  [ТС] 16
Цитата Сообщение от Tulosba Посмотреть сообщение
Так о чем и речь. Нужно по заданию свою реализацию написать? Или взять готовую из книги?
Взять готовую и использовать.Там по заданию нужно сравнивать и складывать цены книг по ISBN.С помощью класса
Sales_item.h появляется новый тип данных и функция-член с помощью которой делается сравнение...НО КЛАСС не добавляется и там не написано как его добавить...
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
02.08.2014, 22:45 17
Цитата Сообщение от Ed_Os Посмотреть сообщение
Что за код метода и какое тело?
Код - это набор символов. Буковки и циферьки. Команды, функции, переменные, классы, все вот эти фигурные и квадратные скобочки, точки с запятой, типы, константы. То есть всё то, что Вы пишите в своих wxDevC++ и MS visual 2010. Это и есть код.

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

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

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

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

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

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

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

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

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

Подучите уже, что ли, терминологию.
Ну я стараюсь...Большинство из того что вы написали знал но за подсказку спасибо....И ещё, я пока о классах знаю лишь то что они позволяют добавить больше функции , типов и т.д. ... Я только первую главу прочёл.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2014, 22:52 19
Цитата Сообщение от Ed_Os Посмотреть сообщение
Но пока бьюсь над решением проблемы подключения класса.
Как я уже говорил ранее: "убрать строку (41)" и упростить main. Т.е. тоже убрать то, чего нет (вызов метода same_isbn как минимум).
Когда это будет сделано - можно продолжить разговор.
1
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
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
02.08.2014, 23:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2014, 23:31
Помогаю со студенческими работами здесь

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

Почему смена текста работает только один раз? Что неправильно в коде и почему?
Нужно чтобы при щелчке мыши на поверхности кнопки текст метки Label изменялся на текст окна...

Почему выводится в виде таблицы и почему не работает сортировка
почему выводится в виде таблицы? почему не работает сортировка? и как туда можно вставить классы...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru