powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / deque + VCL классы
9 сообщений из 9, страница 1 из 1
deque + VCL классы
    #34035865
Местный писатель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C++ Builder

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#include <deque.h>
void __fastcall TForm::CreateDeque()
{
	deque<TfrmTest> d;

	int Index =  0 ;
	while (Index <  100 )
	{ TfrmTest *frmTest = new TfrmTest(NULL);
		d.push_back(*frmTest);
		Index++;
	}

	if (mrOk == ((TfrmTest*)&(d.at( 4 )))->ShowModal())
	{ShowMessage("Ok");}
}

TfrmTest - класс наследник от стандартного VCL класса TForm
d - STL-евский дек..
Я в дек хочу поместить VCL обьект унаследованный от TForm - frmTest
Произходит ошибка: VCL style classes must be constructed using operator new
Вопрос можно ли в контенер типа deque помещать VCL классы , если можно то как?
...
Рейтинг: 0 / 0
deque + VCL классы
    #34036097
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нельзя смешивать стек и динамическую память в контейнере.
...
Рейтинг: 0 / 0
deque + VCL классы
    #34036354
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может обертку сделать ?
Код: plaintext
1.
2.
3.
4.
5.
6.
class TBigVCL
{
  TForm *Form;
public:
  TBigVCL() {Form=new TForm( 0 );....}
  ~TBigVCL(){.....}
}

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
deque + VCL классы
    #34036905
Произходит ошибка: VCL style classes must be constructed using operator new
Вопрос можно ли в контенер типа deque помещать VCL классы , если можно то как?

это ошибка выполнения программы, т.е. конструктор копирования так ругается?

храните тогда в контейнере указатели, а лучше shared pointers
...
Рейтинг: 0 / 0
deque + VCL классы
    #34037093
Местный писатель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы, не понятно только это:
Голенков Владимирshared pointers
А что это такое ?
Может быть имелось ввиду smart pointers?
...
Рейтинг: 0 / 0
deque + VCL классы
    #34037137
Может быть имелось ввиду smart pointers?

да это разновидность smart pointers, имеющая открытый конструктор копирования, т.е. годная для хранения в stl-контейнерах

наиболее распространена реализация подсчетом ссылок, в противовес передачи владения и разрушающего копирования реализаций auto_ptr
...
Рейтинг: 0 / 0
deque + VCL классы
    #34037181
Местный писатель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голенков Владимир Может быть имелось ввиду smart pointers?

да это разновидность smart pointers, имеющая открытый конструктор копирования, т.е. годная для хранения в stl-контейнерах

наиболее распространена реализация подсчетом ссылок, в противовес передачи владения и разрушающего копирования реализаций auto_ptr

такой вот код , переделаный через auto_ptr, к сожалению дал туже ошибку, что и ранее
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	
        deque<TfrmTest> d;
	int Index =  0 ;
	while (Index <  100 )
	{ 	std::auto_ptr<TfrmTest> frmTest(new TfrmTest(NULL));
		d.push_back(*frmTest);
		Index++;
	}

	if (mrOk == ((TfrmTest*)&(d.at( 4 )))->ShowModal())
	{}
Как быть?
...
Рейтинг: 0 / 0
deque + VCL классы
    #34037258
ну допустим так

Код: plaintext
1.
2.
3.
4.
5.
6.
	

deque<TfrmTest*> d;
TfrmTest *frmTest = new TfrmTest(NULL);
d.push_back( frmTest );

...
Рейтинг: 0 / 0
deque + VCL классы
    #34037300
Местный писатель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голенков Владимирну допустим так

Код: plaintext
1.
2.
3.
4.
5.
6.
	

deque<TfrmTest*> d;
TfrmTest *frmTest = new TfrmTest(NULL);
d.push_back( frmTest );



Молодец , все генеально просто.. Спасиб..
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / deque + VCL классы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]