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

Необходимо подправить программу - C++

Восстановить пароль Регистрация
 
diga
6 / 6 / 1
Регистрация: 30.03.2012
Сообщений: 111
25.05.2012, 06:04     Необходимо подправить программу #1
я написал программу:
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
#include <iostream>
#include "liquid.h"
#include "SpNapitki.h"
using namespace std;
 
 
void liquid::setValue(char*nazvanie1, float plot1)
{
    nazvanie=nazvanie1;
    plot=plot1;
}
 
void liquid::printValue()
{
    cout<<"nazvanie = "<< nazvanie << "\n";
    cout<<"plotnost = "<< plot << "\n";
}
 
void SpNapitki::setSpNapitki(char* c1)
{
    c=c1;
}
 
void SpNapitki::printVlue()
{
    cout << "krepost = " << c << "\n";
}
 
int main()
{
    liquid abc=liquid::liquid();
    liquid MYliquid;
    MYliquid.printValue();
    MYliquid.setValue("Vodka",2500);
    MYliquid.printValue();
    //////////////////////////
    SpNapitki MySpNapitki;
    MySpNapitki.printVlue();
    MySpNapitki.setSpNapitki("50_gradusov");
    MySpNapitki.printVlue();
    //system("pause");
}
 
 
#include "liquid.h"
#include <iostream>
using namespace std;
 
 
liquid::liquid(void)
{
    setValue("Voda", 1000);
    cout<<"==========Constructor liquid==========\n";
}
liquid::liquid(int a)
{ 
    cout<<"==========Constructor Liquid no parametrs==========\n";
}
liquid::~liquid(void)
{
    cout<<"==========Destructor liquid==========\n";
}
 
 
#include "SpNapitki.h"
#include <iostream>
using namespace std;
 
 
SpNapitki::SpNapitki(void)
{
    setSpNapitki("13_gradusov");
    cout << "==========Constuctor krepost==========\n";
}
 
 
SpNapitki::~SpNapitki(void)
{
    cout << "=========Destructor krepost==========\n";
}
 
 
#pragma once
class liquid
{
public:
    liquid(void);
    //liquid(float);
    liquid(int);
    ~liquid();
    void setValue(char*nazvanie, float plot);
    void printValue();
private:
    char*nazvanie;
    float plot;
};
 
 
#pragma once
#include "liquid.h"
class SpNapitki :
    public liquid
{
public:
    SpNapitki(void);
    ~SpNapitki(void);
    void setSpNapitki(char*);
    void printVlue();
private:
    char *c;
};
Как видно из этой программы функция void setValue(char*nazvanie, float plot); в базовом и производным классе определены как 2 разные функции, мой вопрос заключается в следующем: как сделать чтобы функция которая была описана в базовом классе была доступна и в производном. это возможно? и как можно передавать данные типа char* через эту функцию если у нас не будет int. понимаю что глупые вопросы, но что то не получается реализовать эту функцию. подскажите как это будет выглядеть? заранее огромное спасибо.

Добавлено через 1 минуту
то есть, чтоб я не мог дважды создавать функцию, которая имеет 1 вид работы, переназначения. чтоб одна и та же функция была доступна и liquid и в SpNapitki

Добавлено через 7 часов 21 минуту
как можно измениьть? срочно надо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2012, 06:04     Необходимо подправить программу
Посмотрите здесь:

Подправить программу, где-то ошибся) C++
помогите подправить программу C++
C++ Распределение памяти (подправить программу)
Нужно подправить программу C++
Подправить программу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5952 / 5557 / 1787
Регистрация: 18.12.2011
Сообщений: 14,202
Завершенные тесты: 1
25.05.2012, 09:29     Необходимо подправить программу #2
Наследование именно для того и делается, чтобы данные и методы базового
класса были доступны в производном классе.
С передачей массива char* в функцию проблем нет.
Только не забудьте в конструкторе выделить под него память
(и удалить в деструкторе).
diga
6 / 6 / 1
Регистрация: 30.03.2012
Сообщений: 111
26.05.2012, 11:39  [ТС]     Необходимо подправить программу #3
не понял....
zss
Модератор
Эксперт С++
 Аватар для zss
5952 / 5557 / 1787
Регистрация: 18.12.2011
Сообщений: 14,202
Завершенные тесты: 1
26.05.2012, 12:19     Необходимо подправить программу #4
Цитата Сообщение от diga Посмотреть сообщение
не понял....
1. Методы и данные базового класса можно использовать в производном классе
(если они в базовом классе имеют тип доступа protected или public).
2.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class liquid
{
public:
    liquid(void){nazvanie=new char[100];strcpy(nazvanie,"test");plot=0;}
    liquid(float aa){nazvanie=new char[100];strcpy(nazvanie,"test");plot=aa;}
    liquid(int aa){nazvanie=new char[aa];strcpy(nazvanie,"test");plot=aa;}
    ~liquid(){delete[] nazvanie;}
    void setValue(char*nazvanie, float plot){strcpy(this->nazvanie,nazvanie);this->plot=plot;}
    void printValue()(cout<<nazvanie<<" "<<plot;}
private:
    char*nazvanie;
    float plot;
};
diga
6 / 6 / 1
Регистрация: 30.03.2012
Сообщений: 111
27.05.2012, 00:20  [ТС]     Необходимо подправить программу #5
Цитата Сообщение от zss Посмотреть сообщение
1. Методы и данные базового класса можно использовать в производном классе
(если они в базовом классе имеют тип доступа protected или public).
каким образом? мне в производном классе надо добавить liquid();?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
27.05.2012, 03:37     Необходимо подправить программу #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
#include <iostream>
 
class A
{ 
  protected:
      int x;
  public:
      A() {x=2; }
      void print() {std::cout<< x; }
};
 
class B : public A // наследуем функции и члены, имеющие спецификатор доступа public или protected
{
  public:
      B() : A() {} // в конструкторе класса B вызываем конструктор класса А
};
 
 
int main()
{
    B b; // создаем объект класса B
    b.print(); // вызываем метод класса В, который был унаследован от класса А
    return 0; 
}
diga
6 / 6 / 1
Регистрация: 30.03.2012
Сообщений: 111
27.05.2012, 13:33  [ТС]     Необходимо подправить программу #7
сейчас попробую сделать скажешь так или нет я тебя понял

Добавлено через 14 минут
MrGluck, так и не получилось ничего... не поможешь переделать программу мою... понял только одно что мне надо использовать protected . я с наследованием запутался.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2012, 17:05     Необходимо подправить программу
Еще ссылки по теме:

C++ Подправить программу
C++ Подправить программу на миссивы, си++
C++ Подправить готовую программу, что бы использовались указатели

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5952 / 5557 / 1787
Регистрация: 18.12.2011
Сообщений: 14,202
Завершенные тесты: 1
27.05.2012, 17:05     Необходимо подправить программу #8
В Вашей программе все более менее правильно.
Для класса SpNapitki можете пользоваться методами из liquid:
C++
1
2
3
4
5
6
7
8
9
int main()
{
    SpNapitki MySpNapitki;
    MySpNapitki.setValue("Vodka",2500);
    MySpNapitki.setSpNapitki("50_gradusov");
    MySpNapitki.printVlue();
    MySpNapitki.printValue();
    system("pause");
}
Yandex
Объявления
27.05.2012, 17:05     Необходимо подправить программу
Ответ Создать тему
Опции темы

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