![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 25.12.2010
Сообщений: 247
|
![]()
Хочу сделать что нибудь типа Button ^ battonArr[size][size]; Как это делается?
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
![]()
ну так и делается наверно, если так ругается то можно попробовать использовать .net-овский массив
System::Array<Button^> ^arrayOfButtons; ну или если двумерный то так наверно System::Array<System::Array<Button^ > ^> ^arrayOfButtons; ну и потом выделяешь память под массивы через gcnew |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 25.12.2010
Сообщений: 247
|
![]()
так тоже не получается, попробовал так: cli::array<cli::array<Button ^, size> ^, size> ^ buttonsArr; вроде ошибок нет тока как с этим работать ума не приложу, да еще почему нельзя выделять память просто new, до этого думал что всегда выделяют gcnew из-за того что следить в падлу
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
![]()
Да действительно не System::Array а cli::array но смысл от этого не меняется.
Код:
ЗЫ: использовать C++/CLI для окошек без особой на то причины смысла мало - код нечитаем сам видешь. Учи C# - он очень похож по синтаксису ЗЗЫ: через gcnew выделяют потому что выделение идет в .net-овской куче а не в обычной Последний раз редактировалось UltimaBeaR; 02.01.2011 в 20:54. |
![]() |
![]() |
![]() |
#5 | ||
Форумчанин
Регистрация: 25.12.2010
Сообщений: 247
|
![]() Цитата:
![]() Цитата:
|
||
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
![]()
.net объекты удалять ты не можешь, этим занимается сборщик мусора, когда в проге не остается ссылок (указателей тобишь) на эти объекты. А когда ты пишешь delete для .net ссылки(это хрень с крышечкой ^) то на самом деле никакого удаления не происходит, однако вызывается метод Dispose, если объект наследуется от IDisposable. Читай описалово C++/CLI там про все эти вещи написано (гугл в помощь)
ЗЫ: другие способы это юзать MFC или среды: C++ Builder, QT Creator и тд Последний раз редактировалось UltimaBeaR; 02.01.2011 в 22:53. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 25.12.2010
Сообщений: 247
|
![]()
спасибо разобрался
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 25.12.2010
Сообщений: 247
|
![]()
ой извиняюсь не совсем разобрался зачем нужно arrayOfButtons[i] = gcnew cli::array<System::Windows::Forms:: Button^>(height); в нормальных массивах можно было бы сразу arrayOfButtons[i][j] = gcnew System::Windows::Forms::Button();
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
![]()
это то же самое что и обычный с++ массивы динамические.
сначала выделяется память под массив указателей на указатель на кнопку затем выделяется память под каждый из элементов этого массива и каждый элемент это еще 1ин массив равный высоте двумерного массива(height) вот и получается 2мерный массив указателей на кнопки. дальше просто выделяешь память под каждую кнопку в 2мерном массиве. Просто вместо указателей идут ссылки .net-овские а так все то же самое что и в простом с++ |
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 25.12.2010
Сообщений: 247
|
![]() Цитата:
еще порылся в интернете такой код: cli::array<int, 2> ^ MyArr = gcnew cli::array<int, 2>(5, 5); он работает, но когда я начинаю присвать что либо элементам массива выносит отладчик, а если написать так cli::array<System::Windows::Forms:: Button^, 2> ^arrayOfButtons = gcnew cli::array<System::Windows::Forms:: Button^, 2>(width, height); то его вообще сразу вынесет |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Массивы в Windows forms | levandowskiy | Общие вопросы C/C++ | 2 | 20.12.2010 09:33 |
windows.forms | *stRong* | Помощь студентам | 0 | 04.06.2010 04:39 |
Вопрос по Windows Forms | tavrocotaps | Общие вопросы .NET | 0 | 11.06.2009 16:43 |