Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стандартный класс в vector, Не работает vector 
:(
    Опции темы
greykardinal
Дата 9.3.2010, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 29.9.2009

Репутация: нет
Всего: нет



Учусь работать с векторами и с STL  в принципе.
Код такой
Код

void TForm1::Draw(int N,int Wi,int Hei)
{
TEdit *ff;
std::vector<TEdit*> edt
for (int i=0;i<N;i++) edt.push_back(ff);  
edt[0]->Text="1";            //здесь все нормально
edt[0]->Parent=this;          // вылетает ошибка Access violation
edt[0]->Width=Wi/(2*(i+1));
edt[0]->Height=Hei/(2*i);
edt[0]->Visible=true;
}

На этапе написания кода никаких подозрений не возникло, а вот потом((( 
Прошу, поясните мне, в чем заключается ошибка и как ее устранить. smile 
Заранее спасибо.
P.S. Кините ссылочку на ресурс, где популярно написано об STL и Boost smile 

PM MAIL   Вверх
t_gran
Дата 9.3.2010, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

Репутация: нет
Всего: 37



greykardinal, а память кто будет выделять?
Код

void TForm1::Draw(int N,int Wi,int Hei)
{
   TEdit *fft; // !!!
   std::vector<TEdit*> edt
   for (int i=0;i<N;i++)
   {
      ff= new TEdit; 
      edt.push_back(ff);  
   }
   edt[0]->Text="1";
   edt[0]->Parent=this;
   edt[0]->Width=Wi/(2*(i+1));
   edt[0]->Height=Hei/(2*i);
   edt[0]->Visible=true;
}




--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
azesmcar
Дата 9.3.2010, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(greykardinal @  9.3.2010,  10:21 Найти цитируемый пост)
Прошу, поясните мне, в чем заключается ошибка и как ее устранить

Ты добавил в контейнер не инициализированный указатель на объект типа TEdit.
Код

TEdit *ff;
// ...


Цитата(greykardinal @  9.3.2010,  10:21 Найти цитируемый пост)
P.S. Кините ссылочку на ресурс, где популярно написано об STL и Boost smile 

http://www.cplusplus.com
http://www.boost.org/doc/libs/1_42_0/libs/libraries.htm

PM   Вверх
greykardinal
Дата 9.3.2010, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 29.9.2009

Репутация: нет
Всего: нет



Спасибо за ссылки smile 
Чуток подправил код
Код

void TForm1::Draw(int N,int Wi,int Hei)
{
TEdit *ff;
std::vector<TEdit*> edt(N);
for (int i=0;i<N;i++)
        {
      ff= new TEdit(this);
      edt.push_back(ff);
        }
edt[0]->Text="1";
edt[0]->Parent=this;               //ошибка
edt[0]->Width=Wi/(2*(i+1));
edt[0]->Height=Hei/(2*i);
edt[0]->Visible=true;
}

Только все равно вылетает ошибка Access violation в том же месте smile 
PM MAIL   Вверх
bsa
Дата 9.3.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



greykardinal, Почитай документацию на свойство Parent. Когда ты делаешь new TEdit(this), ты уже задаешь это свойство.

Добавлено через 44 секунды

 ! 
bsa
И, пожалуйста, один топик - один вопрос.

PM   Вверх
borisbn
Дата 9.3.2010, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(bsa @  9.3.2010,  12:03 Найти цитируемый пост)
Почитай документацию на свойство Parent. Когда ты делаешь new TEdit(this), ты уже задаешь это свойство


Из документации по VCL 5:
Код

__fastcall virtual TEdit(Classes::TComponent* AOwner) : Stdctrls::TCustomEdit(AOwner) { }
__fastcall TEdit(HWND ParentWindow) : Stdctrls::TCustomEdit(ParentWindow) { }

...

Don't confuse the Parent property declared in TControl with the Owner property declared in TComponent




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bsa
Дата 9.3.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



borisbn, в любом случае, это вопрос для другого раздела.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0544 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.