scripto | Дата: Четверг, 07 Апреля 2011, 22:06 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Привет всем.Нужно объявить глобальный массив,и в другом месте создавать его динамически.Приложение типа windowsForm Application(visual studio 2008 c++).пробовал так: Code #pragma once #include "Graphic.h"
#define nmax = 1000; array<Point>^ points; int n = 0; //количество вершин
namespace graph_inwindowsform {
using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing;
/// <summary> /// Сводка для Form1 /// /// Внимание! При изменении имени этого класса необходимо также изменить /// свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса, /// связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае, /// конструкторы не смогут правильно работать с локализованными /// ресурсами, сопоставленными данной форме. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: добавьте код конструктора // points = gcnew array<Point>(1000); }
protected: /// <summary> /// Освободить все используемые ресурсы. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::RadioButton^ radioButton1; protected: private: System::Windows::Forms::RadioButton^ radioButton2; private: /// <summary> /// Требуется переменная конструктора. /// </summary> System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code /// <summary> /// Обязательный метод для поддержки конструктора - не изменяйте /// содержимое данного метода при помощи редактора кода. /// </summary> void InitializeComponent(void) { this->radioButton1 = (gcnew System::Windows::Forms::RadioButton()); this->radioButton2 = (gcnew System::Windows::Forms::RadioButton()); this->SuspendLayout(); // // radioButton1 // this->radioButton1->AutoSize = true; this->radioButton1->Checked = true; this->radioButton1->Location = System::Drawing::Point(747, 95); this->radioButton1->Name = L"radioButton1"; this->radioButton1->Size = System::Drawing::Size(85, 17); this->radioButton1->TabIndex = 0; this->radioButton1->TabStop = true; this->radioButton1->Text = L"radioButton1"; this->radioButton1->UseVisualStyleBackColor = true; // // radioButton2 // this->radioButton2->AutoSize = true; this->radioButton2->Location = System::Drawing::Point(747, 141); this->radioButton2->Name = L"radioButton2"; this->radioButton2->Size = System::Drawing::Size(85, 17); this->radioButton2->TabIndex = 1; this->radioButton2->Text = L"radioButton2"; this->radioButton2->UseVisualStyleBackColor = true; // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(892, 466); this->Controls->Add(this->radioButton2); this->Controls->Add(this->radioButton1); this->Name = L"Form1"; this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; this->Text = L"Лабораторная работа №6 Работа с графом с помощью WindowsForms"; this->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::Form1_MouseDown); this->ResumeLayout(false); this->PerformLayout();
} #pragma endregion
private: System::Void Form1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { Graphics ^g = this->CreateGraphics(); Point P = e->Location; //нарисовать вершины if(this->radioButton1->Checked) { draw_top(n, points); } // graphic.draw_top(ref n, point, P, g); } }; }
но выдает следующую ошибку: 1>------ Построение начато: проект: graph_in windowsform, Конфигурация: Debug Win32 ------ 1>Компиляция... 1>graph_in windowsform.cpp 1>d:\documents\etudes\6семестр\сппо\lab\lab6_graph\graph_in windowsform\Form1.h(7) : error C3145: points: глобальная или статическая переменная не может быть управляемого типа "cli::array<Type> ^" 1> with 1> [ 1> Type=System::Drawing::Point 1> ] 1> может не объявлять глобальную или статичную переменную или элемент собственного типа, который относится к объекту в куче сборщика мусора 1>Журнал построения был сохранен в "file://d:\Documents\etudes\6семестр\сппо\lab\lab6_graph\graph_in windowsform\Debug\BuildLog.htm" 1>graph_in windowsform - ошибок 1, предупреждений 0 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== [/code] Пробовал и вариант как c Point *points таким образом: Code #pragma once #include "Graphic.h" using namespace System::Drawing;
#define nmax = 1000; Point *points; int n = 0; //количество вершин
namespace graph_inwindowsform {
using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing;
/// <summary> /// Сводка для Form1 /// /// Внимание! При изменении имени этого класса необходимо также изменить /// свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса, /// связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае, /// конструкторы не смогут правильно работать с локализованными /// ресурсами, сопоставленными данной форме. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: добавьте код конструктора // }
protected: /// <summary> /// Освободить все используемые ресурсы. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::RadioButton^ radioButton1; protected: private: System::Windows::Forms::RadioButton^ radioButton2; private: /// <summary> /// Требуется переменная конструктора. /// </summary> System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code /// <summary> /// Обязательный метод для поддержки конструктора - не изменяйте /// содержимое данного метода при помощи редактора кода. /// </summary> void InitializeComponent(void) { this->radioButton1 = (gcnew System::Windows::Forms::RadioButton()); this->radioButton2 = (gcnew System::Windows::Forms::RadioButton()); this->SuspendLayout(); // // radioButton1 // this->radioButton1->AutoSize = true; this->radioButton1->Checked = true; this->radioButton1->Location = System::Drawing::Point(747, 95); this->radioButton1->Name = L"radioButton1"; this->radioButton1->Size = System::Drawing::Size(85, 17); this->radioButton1->TabIndex = 0; this->radioButton1->TabStop = true; this->radioButton1->Text = L"radioButton1"; this->radioButton1->UseVisualStyleBackColor = true; // // radioButton2 // this->radioButton2->AutoSize = true; this->radioButton2->Location = System::Drawing::Point(747, 141); this->radioButton2->Name = L"radioButton2"; this->radioButton2->Size = System::Drawing::Size(85, 17); this->radioButton2->TabIndex = 1; this->radioButton2->Text = L"radioButton2"; this->radioButton2->UseVisualStyleBackColor = true; // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(892, 466); this->Controls->Add(this->radioButton2); this->Controls->Add(this->radioButton1); this->Name = L"Form1"; this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; this->Text = L"Лабораторная работа №6 Работа с графом с помощью WindowsForms"; this->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::Form1_MouseDown); this->ResumeLayout(false); this->PerformLayout();
} #pragma endregion
private: System::Void Form1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { Graphics ^g = this->CreateGraphics(); Point P = e->Location; //нарисовать вершины if(this->radioButton1->Checked) { draw_top(n, points); } // graphic.draw_top(ref n, point, P, g); } }; }
Еще не создаю динамически,а уже ругается.Такая же ошибка.Нужно бы создать динамически,глобальный массив в Form1.h
|
|
| |
Pesets | Дата: Пятница, 08 Апреля 2011, 15:03 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Как со стеной разговариваю... http://tinyurl.com/6jg4oja Буквально в первых ссылках и описание проблемы и решение.
Сообщение отредактировал Pesets - Пятница, 08 Апреля 2011, 15:03 |
|
| |