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

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

Войти
Регистрация
Восстановить пароль
 
Reiji Cross
26 / 26 / 1
Регистрация: 14.05.2010
Сообщений: 57
#1

Наращивание списка в конструкторе класса - C++

26.09.2010, 19:55. Просмотров 318. Ответов 0
Метки нет (Все метки)

Доброго времени суток!
Разбираясь с классами наткнулся на такое задание.

класс должен включать обязательный атрибут char *name.
Определить в классе статическую переменную – количество объектов и статическую переменную указатель на список объектов. Также определить метод Show(void) для распечатки имен объектов из списка.

Реализовать классы так, чтобы список наращивался динамически при создании объектов (работа со списком в конструкторе).
Подразумевается что по нажатию ключевой клавиши в писок добавляется объект данного класса. Тут то у меня и загвоздка. Если выделять память вне конструктора, то создание такого списка несложная задача. Просто выделить массив в программе под объекты данного класа тоже по моему неправильно. Во первых получится что список не наращивается в конструкторе, а во вторых мы не можем знать сколько пользователь надумает создать таких объектов. Не совсем понятно как в этом случает в основной программе организовать объекты этого класса.

Вот мои наброски класса
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
class Test {
protected:
    char *name;
    char *type;
    static int count;
    static Test *p;
public:
    int GetCount(){return count;};
    Test(char *s, char *t);
    Test(){};
    char *Show();
};
 
int Test::count = 0;
Test *Test::p = NULL;
 
Test::Test(char *s, char *t){
    count++;
    if((count - 1) == 0) {
        p = this;
        strcpy(p[count - 1].name, s);
        strcpy(p[count - 1].type, t);
    } else {
        realloc(p, count*sizeof(Test));
        strcpy(p[count - 1].name, s);   
        strcpy(p[count - 1].type, t);
    }
}
 
char *Test::Show(){
    char *str;
    for(int i = 0; i < count; i++){
        strcat(str, name);
        strcat(str, "\n");
    }
    return str;
}
Изначально мне эта задача приглянулась из-за того, что отличалась постановкой от других заезженных примеров. Но сейчас понять и решить ее стало делом принципа.

Заранее спасибо всем ответившим!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2010, 19:55     Наращивание списка в конструкторе класса
Посмотрите здесь:

С++, delete в деструкторе класса не видит переменные, создаваемые new в конструкторе класса - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;math.h&quot; using namespace std; class fun { double t = 0, x = 0, y = 0, z =...

Ошибка при работе с объектом класса в конструкторе другого класса - C++
Имеется данный код: https://github.com/ubelian/glgame/tree/master/glgame В файле Food.cpp в конструкторе класса Food::Food() на 19...

Указатель на this в конструкторе класса - C++
Добрый день! Есть некий синтетический пример: #include &lt;iostream&gt; #include &lt;memory&gt; class B; class A

Полиморфизм в конструкторе класса - C++
Доброго времени суток. есть определение класса с конструктором и деструктором: class my { public: //указатель testInt должен...

Ошибка в конструкторе класса - C++
Всем доброго времени суток! Есть простая задачка: Написать реализацию класса и короткую программку, использующую все функции-члены. ...

Объяснить синтаксис в конструкторе класса - C++
Объясните, пожалуйста, что делают: links(links), n(links.size()) в этом классе. Ну или вообще, что выполняют(как работает это?)? class...

Инициализация перемнных класса в конструкторе - C++
Есть ли разница между Constructor():var_1(VAL), var_2(VAL) {} и Constructor() { var_1 = VAL; var_2 = VAL; } ?

Ошибка в объявлении класса (в конструкторе) - C++
Я не могу разобраться с классами и конструкторами, в строчке Progect();// {numb=0; sum=0; date=;} всегда высвечивает ошибку,...

Исключение в конструкторе шаблонного класса - C++
Добрый день! Пишу класс дробей и, соответственно, если пользователь введёт 0 в знаменатель с помощью оператора &gt;&gt; или с помощью...

Что значит const в конструкторе класса? - C++
Здравствуйте, не понимаю что значит const в конструкторе класса. Встречался с const только когда он работал с переменными. Или это значит...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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