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

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

Восстановить пароль Регистрация
 
Reiji Cross
 Аватар для Reiji Cross
26 / 26 / 1
Регистрация: 14.05.2010
Сообщений: 57
26.09.2010, 19:55     Наращивание списка в конструкторе класса #1
Доброго времени суток!
Разбираясь с классами наткнулся на такое задание.

класс должен включать обязательный атрибут 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     Наращивание списка в конструкторе класса
Посмотрите здесь:

C++ Как вызвать виртуальную функцию из дочернего класса, если она определена и вызывается в конструкторе РОДИТЕЛЬСКОГО класса?
В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО! C++
C++ Инициализация объектов класса в конструкторе другого класса
C++ Инициализация перемнных класса в конструкторе
C++ Ошибка в конструкторе копирования класса
C++ Ошибка в объявлении класса (в конструкторе)
Ошибка в конструкторе класса C++
C++ Полиморфизм в конструкторе класса

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

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

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