Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 01.02.2009, 17:37   #1
nns2009
 
Регистрация: 01.02.2009
Сообщений: 4
По умолчанию Массив классов

Подскажите пожалуйста, как я могу создать массив классов?
Лично я пытаюсь создать массив так:
pastime** pases = new *pastime[2];
pases[0] = new pastime();
pases[1] = new pastime();

или так:
pastime pases[2];
pases[0] = new pastime();
pases[1] = new pastime();

может я в классе что не так сделал, вот класс:
Код:
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;
}
};

Модератор: тег CODE

Последний раз редактировалось MaTBeu; 02.02.2009 в 20:03.
nns2009 вне форума
Старый 01.02.2009, 17:43   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Массив классов (как и любых других переменных) можно создать так:
Код:
myClass a[10]; //Создается 10 объектов класса myClass
З.Ы. Ваш код не смотрел, если у вас что-то не получается - конкретизируйте вопрос
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума
Старый 01.02.2009, 17:58   #3
nns2009
 
Регистрация: 01.02.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Массив классов (как и любых других переменных) можно создать так:
Код:
myClass a[10]; //Создается 10 объектов класса myClass
З.Ы. Ваш код не смотрел, если у вас что-то не получается - конкретизируйте вопрос
сама строчка создания прекрасно работает ( pastime pases[2]; ),
но потом строчки вида: pases[0].r = 120; не работают, компилятор пишет что:
1) нельзя объявить массив размером 0
2) массив не может быть типа default-int
3) нельзя объявить два массива с одинаковым именем
хотя во второй строчке я лишь назначаю свойство r первого элемента массива равным 120.
nns2009 вне форума
Старый 01.02.2009, 23:01   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Да работает вроде.

а вы в каком месте пишите это?
Код:
pases[0].r = 120;
counter вне форума
Старый 02.02.2009, 02:18   #5
Pendulum
 
Регистрация: 15.01.2008
Сообщений: 4
По умолчанию

pases - это же указатель на массив указателей на объекты класса passtime.
Цитата:
Код:
pastime** pases = new *pastime[2];
Поэтому изменить поле объекта можно таким образом:
Код:
pases[0]->r=120;
Ваш подход напоминает попытку создать двумерный массив объектов данного класса.
Pendulum вне форума
Старый 02.02.2009, 13:59   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Код:
pastime pases[2];
pases - это действительно указатель, а вот pases[0] - это уже конкретный элемент массива, поэтому такая запись
Код:
pases[0].r = 120;
должна работать
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума
Старый 02.02.2009, 14:07   #7
breate
Пользователь
 
Аватар для breate
 
Регистрация: 30.12.2008
Сообщений: 78
По умолчанию

опубликуй весь код пожалуйста
ща посмотрю у себя на примитиве
Моя работа - Создание сайтов
breate вне форума
Старый 02.02.2009, 14:20   #8
breate
Пользователь
 
Аватар для breate
 
Регистрация: 30.12.2008
Сообщений: 78
По умолчанию свой код

Всё компилируется и работает

myClass.h
Код:
/* 
 * File:   myclass.h
 * Author: breate
 *
 * Created on 2 Февраль 2009 г., 13:07
 */

#ifndef _MYCLASS_H
#define	_MYCLASS_H

class myClass {
private:
    int a;
    int b;
public:
    int c;
    myClass();
    myClass(const myClass& orig);
    virtual ~myClass();
   myClass & operator =(int);
};

#endif	/* _MYCLASS_H */
myClass.cpp
Код:
/* 
 * File:   myclass.cpp
 * Author: breate
 * 
 * Created on 2 Февраль 2009 г., 13:07
 */

#include "myclass.h"

myClass::myClass() {
}

myClass::myClass(const myClass& orig) {
}

myClass::~myClass() {
}
myClass &myClass::operator =(int b)
{
    a=b;
}
main.cpp

Код:
/* 
 * File:   1137.cpp
 * Author: breate
 *
 * Created on 2 Февраль 2009 г., 13:11
 */

#include <stdlib.h>

#include "myclass.h"

/*
 * 
 */
int main(int argc, char** argv) {
    int a;
    myClass *b;
    b=new myClass[2];
    b[1]=120;
    b[1].c=340;
    return (EXIT_SUCCESS);
}
сравнивай смотри описки или публикуй код целиком буду их искати я
Моя работа - Создание сайтов
breate вне форума
Старый 02.02.2009, 16:00   #9
nns2009
 
Регистрация: 01.02.2009
Сообщений: 4
По умолчанию заработало

похоже да, моя оплошность:
теперь буду знать что коды типа:
pases[0].r;
работают только внутри функции, а я всё подряд писал и в глобальном виде:
pastime pases[2];
pases[0].r = 120;
Ну теперь всё заработало, всем спасибо.
nns2009 вне форума
Старый 02.02.2009, 18:08   #10
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Я так понимаю, что масив класов можно сделать динамическим (ну или ка ктам назвается масив, в котором может меняться кол-во элементов), как и обычный масив, верно?
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регистрация классов. Nytlec Помощь студентам 1 18.01.2009 14:05
Шаблоны пользовательских классов MaTBeu Общие вопросы C/C++ 2 23.03.2008 19:02
агрегирование классов M_Yuri Общие вопросы Delphi 3 12.02.2008 18:31
Проблемы с иерархией классов NecroSlider Помощь студентам 2 15.04.2007 21:57