Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
vladiktankonlin
1 / 1 / 1
Регистрация: 30.01.2016
Сообщений: 19
#1

C++, динамические переменные, нужен совет

23.05.2016, 23:27. Просмотров 252. Ответов 1
Метки c++ (Все метки)

Здравствуйте, прошу вашей помощи! Я никак не могу разобраться, где нужно использовать динамические переменные, а где статические. В итоге пихаю динамические переменные куда попало и имею кучу проблем. Например: создаю
C++
1
MatRepeats *ob = new MatRepeats;
и к элементам структуры приходится обращаться по-китайски:
C++
1
*ob->name = "pl228"; *ob->repeats = 3;
Помогите, пожалуйста, разобраться с использованием статических и динамических переменных. Вот пример моего кода. Только скелет класса, который описывает метеорит:
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
#include <string>
#include <vector>
 
using std::string;
using std::vector;
 
int main()
{
    getchar();
    return 0;
}
 
// Описывает количество повторений материала в метеоритах. Упало три метиорита из плутония228,
// => создаем объект mat типа MatRepeats; *mat->name = "плутоний228", *mat->repeats = 3;
struct MatRepeats   
{
    string *name = new string("");
    int *repeats = new int(0);
    ~MatRepeats()
    {
        delete name;
        delete repeats;
    }
};
 
struct Material //Описывает свойства материала
{
    string *name = new string("");
    int *density = new int(0); // Density - на русском "плотность"
 
    ~Material()
    {
        delete name;
        delete density;
    }
};
 
class Meteorite
{
private:
    int *orderNum = new int(0); // Номер метеорита по порядку, назначается при создании экземпляра класса
    string *name = new string(""); // Имя метеорита
    Material *material = new Material; // Его материал
    double *speed = new double(0); // Скорость падения
    double *angle = new double(0); // Угол падения
    double *crater = new double(0); // РАДИУС кратера
 
public:
    static int *copyAmount; // Кол-во инициализаций объектов типа Meteorite. Переменная инициализируется в хедере, т.к.
                            // при инициализации в классе компилятор ругается
    static vector<MatRepeats> *repeatsVec; // Вектор, содержащий объекты MatRepeats
 
    //Структура для инициализвации параметров метеорита
    Meteorite(int *orderNum1, string *name, Material *material, double *speed, double *angle, double *crater) 
        : orderNum(orderNum1), name(name), material(material), speed(speed), angle(angle), crater(crater) {};
 
    //Деструктор
    ~Meteorite()
    {
        delete orderNum;
        delete name;
        delete material;
        delete speed;
        delete angle;
        delete crater;
    }
 
};
Подскажите, нужен ли в данном случае деструктор, нужны ли в структуре и классе динамические переменные, можно ли в подобных случаях пользоваться статическими переменными?
Ну и тыкните носом в ошибки, пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2016, 23:27
Ответы с готовыми решениями:

Динамические (или не динамические.) переменные!
УважаемыЕ! Есть вопрос. Вот код программы (ТЗ метод северо-западного угла) -...

динамические переменные
1. Составьте программу, в которой 8-10 переменных разной длины, например,...

Динамические переменные
#include&lt;iostream&gt; using namespace std; int main() { int *ptr_number =...

Динамические глобальные переменные
При изучении С++ возникла проблема - потребовалось изменить два объекта одной...

Динамические переменные (нужно немного переделать)
Нужно немного переделать здесь нужно найти для каждой строки количество...

1
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
24.05.2016, 02:01 #2
Композиция/Агрегация

Как правило так называемое вами "динамическое" создание используется в качестве агрегации связи между классами. Так же отмечу PIML c++
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2016, 02:01

Как выделить память под динамические переменные при создании класса?
В прошлой теме ответ получил, но не до конца. Вопрос такой, как выделить...

Нужен совет
Последний раз прогал очень давно, уже подзабыл, нужен совет. Дан текстовый...

Нужен совет!
Как можно сделать что бы переменную произвольного типа объявленную в одной...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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