Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Мини проблема...


Автор: MisterSER 19.9.2008, 23:03
У меня мини проблема, при создании масива класов, с используванием конструктора, ругаетса компилятор
Как ето сделать?)
P.S. у меня так(но чего-то неработает)
Код

SomeClass *some = new SomeClass[i](j);

P.S.2 полное название темы просто непоместилось, поетому я написал кратко smile

Автор: vinter 19.9.2008, 23:44
так делать нельзя. 

Автор: MisterSER 20.9.2008, 00:41
Цитата(vinter @ 19.9.2008,  22:44)
так делать нельзя.

вопрос в том, как ето реализуетса на практике smile
и конешно ясно, что так, как я думал сделать, неверно, былоб правильно, я бы не спрашивал в чом ошибка smile
P.S. я случайно не ошибся под-форумом?)))

Автор: Cricket2007 20.9.2008, 00:47
массив классов?  чот я такого никогда не встречал  хотя я еще чайник может массив объектов? это можно сделать 100 пудово можно 

Автор: MisterSER 20.9.2008, 01:06
класс и обьект, ето одно и тоже с разными названиями=)
хотя наверное более правильно будет называть обьектами...)
так от, просто мачив, без проблем, просто с конструктором, тоже
а от с масивом и конструктором материца, вот мне и интересно, как и почему smile

Автор: J0ker 20.9.2008, 02:10
Цитата(MisterSER @  19.9.2008,  23:03 Найти цитируемый пост)
Как ето сделать?)

никак

Автор: UniBomb 20.9.2008, 02:13
Цитата(MisterSER @  20.9.2008,  01:06 Найти цитируемый пост)
класс и обьект, ето одно и тоже


Класс - некая абстракция, описание сущности
Объект - конкретный экземпляр класса


MisterSER, 
ммм... может так:

Код

SomeClass *some = new SomeClass[i];
for(int j = 0; j < /*some_value*/; j++)
 some[j]->SomeCosntr(/*....*/);

Автор: J0ker 20.9.2008, 02:29
если в вашем классе есть не explicit конструктор от типа j то можно вот так:
Код

SomeClass some[] = {j, j, j, j, j, j /*и так i раз*/};

конструктор сработает как implicit преобразование типов

Автор: J0ker 20.9.2008, 03:04
Цитата(UniBomb @  20.9.2008,  02:13 Найти цитируемый пост)
Код

some[j]->SomeCosntr(/*....*/);
 

Код

some[j].SomeCosntr(/*....*/);




Автор: andrew_121 20.9.2008, 10:14
MisterSER, Во понаписывали... smile Обьясни, что тебе нужно?

Автор: UniBomb 20.9.2008, 17:44
J0ker, а ты знаеш чем отличаются "." от "->"?

Автор: Rickert 20.9.2008, 20:04
Учим мат. часть smile 

Автор: vinter 20.9.2008, 20:35
UniBomb, J0ker тебя правильно исправил

Автор: MisterSER 20.9.2008, 20:45
Цитата(andrew_121 @ 20.9.2008,  09:14)
MisterSER, Во понаписывали... smile Обьясни, что тебе нужно?

мне нужно заставить работать конструктор=)
ато при создании масива обьектов, если я использую конструктор, то компилятор материтса...(

Автор: J0ker 20.9.2008, 22:13
Цитата(UniBomb @ 20.9.2008,  17:44)
J0ker, а ты знаеш чем отличаются "." от "->"?

это риторический вопрос?  smile

Добавлено через 4 минуты и 36 секунд
Цитата(MisterSER @ 20.9.2008,  20:45)
Цитата(andrew_121 @ 20.9.2008,  09:14)
MisterSER, Во понаписывали... smile Обьясни, что тебе нужно?

мне нужно заставить работать конструктор=)
ато при создании масива обьектов, если я использую конструктор, то компилятор материтса...(

это невозможно, т.к. для new такого синтаксиса не существует
максимум что мне прихоит в голову навскидку - извернуться через какой-нить прокси-класс с перегруженным плейсмент operator new[]
но ето надо думать а мне лень  smile 

Автор: MudriGoga 21.9.2008, 18:58
Решить можно проблему двумя способами:
1) Создаёшь функцию которая делает тоже самое что и констрактор, и вызываешь её потом в цикле.
2) По этому поводу я не уверен но что то в этом роде, точно не помню 

Код

class foo(); 

...

foo* class1;
class1 = new foo[n];
for(int i = 0; i < n; i++)
 class1 = foo();





Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)