массивы классов

Тема в разделе "Общие вопросы по С и С++", создана пользователем nns2009, 1 фев 2009.

Статус темы:
Закрыта.
  1. nns2009

    nns2009 Гость

    У меня почему-то не создаётся массив классов, точнее создаётся, но не эксплуатируется. Я пытаюсь создать так:
    Код (Text):
    [b]pastime** pases = new *pastime[2];
    pases[0] = new pastime();
    pases[1] = new pastime();[/b]
    или так:
    Код (Text):
    [b]pastime pases[2];
    pases[0] = new pastime();
    pases[1] = new pastime();[/b]
    может я в классе что не так сделал, вот класс:
    Код (Text):
    class pastime
    {
    public:
    BYTE r;
    BYTE g;
    BYTE b;
    char* name;
    char* description;
    pastime()
    {
    r = 255;
    g = 255;
    b = 255;
    name = "Не назначено"; //new char[13];
    description = "Не назначено"; //new char[13];
    return;
    }
    pastime(byte r1, byte g1, byte b1, char* name1, char* description1)
    {
    r = r1;
    g = g1;
    b = b1;
    name = new char[strlen(name1)+1];
    strcpy(name, name1);
    description = new char[strlen(description1)+1];
    strcpy(description, description1);
    return;
    }
    ~pastime()
    {
    delete [] name;
    delete [] description;
    return;
    }
    };
    сама строчка создания прекрасно работает ( pastime pases[2]; ),
    но потом строчки вида: pases[0].r = 120; не работают, компилятор пишет что:
    1) нельзя объявить массив размером 0
    2) массив не может быть типа default-int
    3) нельзя объявить два массива с одинаковым именем
    хотя во второй строчке я лишь назначаю свойство r первого элемента массива равным 120.
     
  2. Dimmuborgir

    Dimmuborgir Гость

    я не понял вы хотели создать двумерный или одномерный массив?
    судя по указателю на указатель - двумерный. тогда создавать надо так:

    Код (Text):
    pastime** pases = new pastime*[2];
    for (int i=0;i<2;i++)
    *(pases+i)=new pastime[2];
    и обращаться к нему соответстенно:

    Код (Text):
    passes[0][0].r;
    если же одномерный то:

    Код (Text):
    pastime* pases = new pastime[2];
     
  3. nns2009

    nns2009 Гость

    Ошибка выяснилась:
    я обращался к массиву вне функций, а надо в функции,
    теперь всё работает.
     
Загрузка...
Похожие Темы - массивы классов
  1. Искушенный
    Ответов:
    0
    Просмотров:
    432
  2. Искушенный
    Ответов:
    1
    Просмотров:
    427
  3. Искушенный
    Ответов:
    1
    Просмотров:
    394
  4. Rpp
    Ответов:
    1
    Просмотров:
    812
  5. romanovbadboy2
    Ответов:
    0
    Просмотров:
    670
Статус темы:
Закрыта.

Поделиться этой страницей