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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.78
yana2
Сообщений: n/a
#1

Как создать класс, который содержит элементы другого класса - C++

02.09.2008, 17:38. Просмотров 3296. Ответов 8
Метки нет (Все метки)

Добрый день, я чисто любитель, начала сама потихоньку разбираться в с++, благополучно дошла до классов и сделала класс konto (банковский счет). Теперь я хочу сделать класс банк, в котором будут функции ДобавитьНовыйСчет, ДобавитьДенегНаУказанныйСчет, РаспечататьИнфуПоВсемСчетам и НайтиСчетПоНомеру.
Но я не знаю как вообще сделать класс, который содержит элементы другого класса, читала про arrays и векторы, но как-то не получается, везде мало примеров. Вроде стандартная задача, каталог, но примеров на моем простеньком уровне не нашла.
Буду очень благодарна, если найдется кто-то, кто покажет, как это делается.
У меня Visual C++ 6.0
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
# include <iostream.h>
# include <string.h>
 
class konto
{
public:
    konto (char*,int,double,float);
    void skrivut(void);
    void insat(const int &i);
    void uttag(float u);
    void ranteutbet();
   
private:
    int nomer;
    char name[89];
    double saldo;
    float renta;
   
};
 
konto::konto(char* name,int nomer, double saldo, float renta)
{
    strcpy (konto::name,name);
    konto::nomer=nomer;
    konto::saldo=saldo;
    konto::renta=renta;
   
}
 
void konto::skrivut(void)
{
    cout<<"name: "<<name<<endl;
    cout<<"nomer: "<<nomer<<endl;
    cout<<"renta%: "<<renta<<endl;
    cout<<"saldo: "<<saldo<<endl<<endl;    
}
 
void konto::insat(const int &i)
{
    saldo=saldo+i;
   
}
 
void konto::uttag(float u)
{
    saldo=saldo-u;
}
void konto::ranteutbet()
{
    saldo=saldo+(saldo*2.5/100);
 
}
 
class bank
{
};
 
 
void main()
{
 
    konto k ("Namn", 1, 1500, 2.5);
 
    k.skrivut();
    k.insat(500);
    k.skrivut();
    k.uttag(300);
    k.skrivut();
    k.ranteutbet();
    k.skrivut();
 
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2008, 17:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как создать класс, который содержит элементы другого класса (C++):

Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего - C++
Создайте класс employee, который содержит имя (объект класса string) и но- мер (типа long) служащего. Включите в него метод getdata(),...

Создать класс Point, который имеет два закрытых члена класса (координаты) - C++
Помогите плиз код написать. Я чёт не очень понимаю в классах. Создайте класс Point, который имеет два закрытых члена класса...

Класс как параметр другого класса - C++
Зачем использовать один класс как параметр другого, пример: class A {} class B {private: A Peremennaya;} И в чем разница: ...

На основе созданного класса OPERATION, создать класс-потомок OP_SUMMATOR, который производит сложение двух полей - C++
Я создал класс OPERATION, который является абстрактной операцией над двумя числами типа int. Непосредственно сама операция ...

Дано два одномерных массива, создать третий массив который содержит элементы первого массива - C++
Дано два одномерных массива, создать третий массив который содержит элементы первого массива, но без элементов второго массива. Заранее...

Создать класс Rectangle, разработав следующие элементы класса - C++
Создать класс Rectangle, разработав следующие элементы класса: a) Поля: int a, b; b) Конструктор, позволяющий создать экземпляр класса...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
02.09.2008, 17:53 #2
типа того:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class konto;
class Bank
{
    private:
    std::vector<konto*>Kontos;
    public:
    void AddNewKonto(SomeParams);
};
 
void Bank::AddNewKonto(SomeParams)
{
   Kontos.push_back(new konto(ConstructorParams));
}
0
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
02.09.2008, 23:28 #3
Ээээ.... 1. А зачем создавать экземпляр класса konto динамически? 2. Приведенный код для класса Bank замечательно приведет к бааальшому "ба-бах!". Лучше переделать так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class konto;
 
class Bank
{
private:
    std::vector<konto> Kontos;
public:
    void AddNewKonto(SomeParams);
};
 
void Bank::AddNewKonto(SomeParams)
{
   Kontos.push_back(konto(ConstructorParams));
}
0
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
03.09.2008, 09:14 #4
Цитата Сообщение от CheshireCat Посмотреть сообщение
Ээээ.... 1. А зачем создавать экземпляр класса konto динамически? 2. Приведенный код для класса Bank замечательно приведет к бааальшому "ба-бах!".
это в каком месте бабах то будет?
а чтобы избежать утечки памяти придумали деструкторы, в которых память перед удалением объекта можно подчистить

у класса konto есть свой конструктор, который инициализирует все его параметры. как Вы при статическом объявлении его вызовете?
0
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
03.09.2008, 10:49 #5
1. Правильно, чтобы не было утечек памяти - должен быть деструктор, который "подчистит" память. В приведенном фрагменте кода его нет. Течет память... а она все же не беспредельна! Определяем деструктор? Отлично!
Но: в этом случае отсутствие пользовательских конструктора копирования и оператора= очень быстро на каком-то этапе реального кода приведет к попытке повторного удаления уже удаленного указателя, и, разумеется, "ба-бах!". Следить вручную за указателями в векторе - бесполезно.... Придется применять идиому умных указателей, не так ли? Иначе - влетели.
2. Да элементарно: konto MyCoolKonto(ConstructorParams);
0
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
03.09.2008, 20:28 #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
#include "stdafx.h"
class neuro {
  public:
    double *inputs;
    int inputs_count;
    neuro(int uc, double ii )
    {    
        inputs_count=uc;
        inputs = (double *)calloc(inputs_count, sizeof(double));
        for(int i=0; i<inputs_count ;i++)
            inputs[i]=ii;
        
        };
  };
//----------------------------------------------------------------------------
class auction {
  public:
    double *m_old_time;
    neuro *nabor_net;
 
    auction(){
        int neuro_count=5;
        nabor_net = (neuro *)calloc(neuro_count, sizeof(neuro));
        for(int unit=0; unit<neuro_count; unit++ )
            nabor_net[unit] = neuro(5,0.003);
        }
    };
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
тебе надо создать массив объектов. напиример как в примере.
сам с этим голову мучаю.
Про указатель *, указатель на указатель **, и про new
0
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
03.09.2008, 22:02 #7
C++
1
SomeClass* i=new SomeClass[n];
нипайдет?
0
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
03.09.2008, 22:33 #8
ну ты разогнался!!!!!!!!!
как это ты потом собираешся вызывать конструктор?

SomeClass(парметры)[n]так чтоли???

по моему как ты написал категорически нельзя.
иначе программирование было бы слишком просто
0
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
03.09.2008, 22:39 #9
хм, тогда только в цикле
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2008, 22:39
Привет! Вот еще темы с ответами:

Создать класс Triangle, разработав следующие элементы класса - C++
Создать класс Triangle, разработав следующие элементы класса: a. Поля:  int a, b, c; b. Конструктор, позволяющий создать экземпляр...

Создать класс Money и разработать указанные элементы класса - C++
Нужно написать программу за таким типом.

Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке - C++
Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке.

Ошибка при компиляции. Как правильно создавать класс с объектами от другого класса? - C++
Есть класс Car. У него есть двигатель(class Engine) и переменная скорость(speed), которая зависит от мощности(power). power- переменная...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.09.2008, 22:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru