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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2012, 00:10   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Динамический объект с параметрами

Код:
struct TPointArray
{
 long int x, y;

 TPointArray() {};

 virtual ~TPointArray() {};

 TPointArray(long int x, long int y)
 {
  this->x = x; this->y = y;
 };
};
Код:
int main();
{

 TPointArray Obj(10, 20);
 return 0;
}
Возможно ли такое провернуть с динамическим объектом? Obj(10, 20);
coNsept вне форума Ответить с цитированием
Старый 21.09.2012, 00:17   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

coNsept

Возможно ли такое провернуть с динамическим объектом? Obj(10, 20);

естессно.

на "Си с классами":

TPointArray* Obj = new TPointArray(10, 20);
...
delete Obj;


На C++:

std::auto_ptr<TPointArray> Obj(new TPointArray(10, 20));


на C++11:

std::unique_ptr<TPointArray> Obj(new TPointArray(10, 20));
Rififi вне форума Ответить с цитированием
Старый 21.09.2012, 00:34   #3
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Все спасибо, разобрался. Думал что так нельзя.

Код:
TPointArray *Obj = new TPointArray(10, 20);
for (int i = 0; i < 5; i++)
 Obj[i] = TPointArray(i * 2, i * 4);
...
coNsept вне форума Ответить с цитированием
Старый 21.09.2012, 00:52   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

coNsept

Все спасибо, разобрался

Говоришь разобрался, а шож творишь-то?

Думал что так нельзя.

А так и нельзя :D

Вот почему следует избегать программирования на "Си с классами" и использовать только C++
с auto_ptr/unique_ptr написание подобного быдло-кода невозможно.
Rififi вне форума Ответить с цитированием
Старый 22.09.2012, 13:13   #5
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Почему так нельзя? (так в принципе работает)
Как лучше и как правильнее?
Выслушаю любой совет и скажу большую спасибу за совет.
coNsept вне форума Ответить с цитированием
Старый 23.09.2012, 01:08   #6
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
TPointArray *Obj = new TPointArray(10, 20);
for (int i = 0; i < 5; i++)
 Obj[i] = TPointArray(i * 2, i * 4);
Здесь динамически создается один объект типа TPointArray (как и обычным конструктором в первом посте, но в другой области памяти). А дальше вы его используете как указатель на массив (!) объектов. Если работает, то Вам просто повезло, так как в общем случае это ошибка. Вам нужно что-то такое:

Код:
TPointArray *Obj = new TPointArray[5];
for (int i = 0; i < 5; i++)
 Obj[i] = TPointArray(i * 2, i * 4);
...
delete [] Obj; // не забываем удалять динамические массивы
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
процедура клика на динамический объект ВалекFCRK Общие вопросы Delphi 4 05.06.2011 15:48
программа с типизированными параметрами-значениями и параметрами-переменными Kira09 Паскаль, Turbo Pascal, PascalABC.NET 1 20.12.2010 22:23
Динамический массив - или всё таки не динамический? vedro-compota Общие вопросы C/C++ 30 10.12.2010 23:22
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? Farrel Общие вопросы C/C++ 2 13.11.2010 17:37