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

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

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

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

02.09.2008, 17:38. Просмотров 3258. Ответов 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     Как создать класс, который содержит элементы другого класса
Посмотрите здесь:

Создать класс Rectangle, разработав следующие элементы класса C++
C++ Как создать объект с конструктором в интерфейсе другого класса?
На основе созданного класса OPERATION, создать класс-потомок OP_SUMMATOR, который производит сложение двух полей C++
C++ Создайте класс, который содержит информацию об имени и адресе
C++ Класс как параметр другого класса
C++ Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего
Реализовать класс Time, который содержит три поля типа int C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
oxotnik
1586 / 1063 / 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));
}
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,327
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));
}
oxotnik
1586 / 1063 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
03.09.2008, 09:14     Как создать класс, который содержит элементы другого класса #4
Цитата Сообщение от CheshireCat Посмотреть сообщение
Ээээ.... 1. А зачем создавать экземпляр класса konto динамически? 2. Приведенный код для класса Bank замечательно приведет к бааальшому "ба-бах!".
это в каком месте бабах то будет?
а чтобы избежать утечки памяти придумали деструкторы, в которых память перед удалением объекта можно подчистить

у класса konto есть свой конструктор, который инициализирует все его параметры. как Вы при статическом объявлении его вызовете?
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,327
03.09.2008, 10:49     Как создать класс, который содержит элементы другого класса #5
1. Правильно, чтобы не было утечек памяти - должен быть деструктор, который "подчистит" память. В приведенном фрагменте кода его нет. Течет память... а она все же не беспредельна! Определяем деструктор? Отлично!
Но: в этом случае отсутствие пользовательских конструктора копирования и оператора= очень быстро на каком-то этапе реального кода приведет к попытке повторного удаления уже удаленного указателя, и, разумеется, "ба-бах!". Следить вручную за указателями в векторе - бесполезно.... Придется применять идиому умных указателей, не так ли? Иначе - влетели.
2. Да элементарно: konto MyCoolKonto(ConstructorParams);
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
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
03.09.2008, 22:02     Как создать класс, который содержит элементы другого класса #7
C++
1
SomeClass* i=new SomeClass[n];
нипайдет?
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
03.09.2008, 22:33     Как создать класс, который содержит элементы другого класса #8
ну ты разогнался!!!!!!!!!
как это ты потом собираешся вызывать конструктор?

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

по моему как ты написал категорически нельзя.
иначе программирование было бы слишком просто
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2008, 22:39     Как создать класс, который содержит элементы другого класса
Еще ссылки по теме:

Дано два одномерных массива, создать третий массив который содержит элементы первого массива C++
C++ Составить класс, который содержит информацию о наличии автобусов в автобусном парке
C++ Создать класс Money и разработать указанные элементы класса
Создать класс Point, который имеет два закрытых члена класса (координаты) C++
Создать класс Triangle, разработав следующие элементы класса C++

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

Или воспользуйтесь поиском по форуму:
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
03.09.2008, 22:39     Как создать класс, который содержит элементы другого класса #9
хм, тогда только в цикле
Yandex
Объявления
03.09.2008, 22:39     Как создать класс, который содержит элементы другого класса
Ответ Создать тему
Опции темы

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