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

Наследование классов. - C++

Восстановить пароль Регистрация
 
Яна_Max
3 / 3 / 0
Регистрация: 08.11.2011
Сообщений: 137
17.03.2012, 17:43     Наследование классов. #1
Добрый день! Помогите, пожалуйста, разобраться с наследованием классов. И, вероятно, неправильно использую функцию(ругается, что функция не принимает 0 аргументов-"s1.getSalePrice();")

P.S. классы и методы такие по заданию.
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
// 10.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "fstream"
#include "string"
using namespace std;
class SweetBox
{private:
  int quantity;//количество конфет в упаковке
  string name;//название упаковки конфет
 public: 
  double regularPrice;//постоянная цена
  double getSalePrice(){};
 
void givelist()
{
    cout<<"\n vvedite name: ";
    cin>>name;
    cout<<"\n vvedite quantity: ";
    cin>>quantity;
    cout<<"\n vvedite regularPrice: ";
    cin>>regularPrice;
 
}
 
void getlist()
{
    cout<<"\n name="<<name;
    cout<<"\n quantity="<<quantity;
    cout<<"\n regularPrice="<<regularPrice;
}
};
 
class Present: public  SweetBox
{public: 
   int weight;//вес упаковки
   double salePrice;//цена со скидкой
double getSalePrice(double regularPrice)
{ 
    SweetBox:: getSalePrice();
    double salePrice;
    if (weight>1000)
        salePrice=regularPrice*0,8;//если вес больше 1000, предоставляется скидка 20%
    return salePrice;
}
 
void givelist()
{  
    SweetBox::givelist();
    cout<<"\n vvedite weight:";
        cin>>weight;
}
 
void getlist()
{
    SweetBox::getlist();
    cout<<"\n weight="<<weight;
    cout<<"\n salePrice="<<salePrice;
}
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    Present s1;//объект s1 класса Present
    s1.givelist();
    s1.getSalePrice();
    s1.getlist();
    getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2012, 17:43     Наследование классов.
Посмотрите здесь:

наследование классов C++
наследование классов C++
C++ Наследование классов
Наследование классов C++
C++ Наследование классов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
17.03.2012, 17:49     Наследование классов. #2
C++
1
s1.getSalePrice();
функция должна получать аргумент, передай ей что-нибудь.
C++
1
s1.getSalePrice(12345); // например так
еще
C++
1
salePrice=regularPrice*0,8;//если вес больше 1000, предоставляется скидка 20%
вместо запятой поставь точку в числе 0.8
Яна_Max
3 / 3 / 0
Регистрация: 08.11.2011
Сообщений: 137
17.03.2012, 18:09  [ТС]     Наследование классов. #3
Цитата Сообщение от Kastaneda Посмотреть сообщение
C++
1
s1.getSalePrice();
функция должна получать аргумент, передай ей что-нибудь.
C++
1
s1.getSalePrice(12345); // например так
Передать можно что угодно??? извините, любую "фигню" ?

Добавлено через 12 минут
Спасибо. Да, с "12345" запускается, работает, но вычисляет неверно.((
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
17.03.2012, 18:35     Наследование классов. #4
Цитата Сообщение от Яна_Max Посмотреть сообщение
Передать можно что угодно??? извините, любую "фигню" ?
Что значит "любую фигню"? Что передашь, то и посчитает. Хотя я в код не вникал.
Cool-T
20 / 13 / 1
Регистрация: 17.12.2010
Сообщений: 34
17.03.2012, 18:55     Наследование классов. #5
У Вас функция getSalePrice принимает 1 аргумент (double regularPrice) (41 строка). Скорей всего это опечатка, так как regularPrice у вас непосредственно в классе есть, так что данной функции ничего принимать не надо.

Добавлено через 15 минут
также в
C++
1
2
SweetBox:: getSalePrice();
        double salePrice;
Непонятно что делает. Возможно имелось ввиду
C++
1
salePrice = SweetBox::getSalePrice()
Яна_Max
3 / 3 / 0
Регистрация: 08.11.2011
Сообщений: 137
17.03.2012, 19:10  [ТС]     Наследование классов. #6
Просто метод getSalePrice есть в базовом классе SweetBox, а реализацию надо написать в классе Present.
C++
1
2
SweetBox:: getSalePrice();
        double salePrice;
этим я решила "унаследовать" метод, так же как и
C++
1
2
void getlist()
        SweetBox::getlist();
Cool-T
20 / 13 / 1
Регистрация: 17.12.2010
Сообщений: 34
17.03.2012, 19:16     Наследование классов. #7
C++
1
2
SweetBox:: getSalePrice();
        double salePrice;
Здесь вы вызвали getSalePrice из SweetBox, который ничего не сделал, а второй строчкой вы создали неинициализированную переменную. Которую в том же участке кода используете, что не есть хорошо.
Яна_Max
3 / 3 / 0
Регистрация: 08.11.2011
Сообщений: 137
17.03.2012, 19:28  [ТС]     Наследование классов. #8
Нужно как-то взять значение постоянной цены regularPrice, введенное пользователем в методе givelist() класса SweetBox,для расчета цены со скидкой в методе getSalePrice()....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2012, 19:33     Наследование классов.
Еще ссылки по теме:

C++ Наследование классов
Наследование классов C++
Наследование классов C++

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

Или воспользуйтесь поиском по форуму:
Cool-T
20 / 13 / 1
Регистрация: 17.12.2010
Сообщений: 34
17.03.2012, 19:33     Наследование классов. #9
Цитата Сообщение от Яна_Max Посмотреть сообщение
почему не есть хорошо?
Потому что значение неинициализированной переменной непредсказуемо.
Yandex
Объявления
17.03.2012, 19:33     Наследование классов.
Ответ Создать тему
Опции темы

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