|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
|
Использование собственного класса в Windows Forms20.09.2012, 18:16. Показов 31913. Ответов 19
Метки нет (Все метки)
Здравствуйте, есть такая проблема, никак не могу понять как в Winwows Forms использовать свой класс. Есть у меня класс class.cpp, form1.h, проект.cpp. Может ли мне кто-нибудь подробно объяснить, как подружить класс с проектом? На этом форуме уже была такая тема, но там насколько я понял проблему так и не решили, то есть может быть и решили, но я не заметил. Там как-то всё не содержательно, урывками. Внедрить свой класс в Windows Forms приложение.
0
|
|
| 20.09.2012, 18:16 | |
|
Ответы с готовыми решениями:
19
Использование собственного класса в Windows Forms Использование собственного класса в Виндовс Формс Использование Boost в Windows Forms |
|
Комп_Оратор)
|
|||||||||||||||||||||||||||||||
| 20.09.2012, 21:13 | |||||||||||||||||||||||||||||||
|
Создаём Решение (Solution) C++ Windows Forms Applicftion
В папку хедерфайлов (там уже есть Form1) добавляем MyClass.h в нём пишем:
в нём пишем:
2
|
|||||||||||||||||||||||||||||||
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
|
| 20.09.2012, 21:31 [ТС] | |
|
Спасибо, буду пробовать
0
|
|
|
Комп_Оратор)
|
|||||||
| 20.09.2012, 21:49 | |||||||
Если в методе используется не объявленная в классе переменная класса NET включайте то же в Cpp.
0
|
|||||||
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
|||||||||||
| 20.09.2012, 22:37 [ТС] | |||||||||||
|
Сделал как вы сказали, появилось две ошибки:
1>d:\мои документы\visual studio 2010\projects\matrix_lite\matrix_lite\Cl ass_Matrix.h(8): error C4368: не удается определить "Matrix_L" как член управляемого "Matrix_of_Light": смешанные типы не поддерживаются 1>d:\мои документы\visual studio 2010\projects\matrix_lite\matrix_lite\Cl ass_Matrix.h(9): error C4368: не удается определить "Mass_mult" как член управляемого "Matrix_of_Light": смешанные типы не поддерживаются На форуме нашел похожую тему, (Не могу использовать класс на форме)сделал так как там сказано, не помогло. Появилось еще больше ошибок, вместе с теми, которые были еще раньше. Выложу коды cpp и h: Код .h:
0
|
|||||||||||
|
Комп_Оратор)
|
|
| 20.09.2012, 22:47 | |
|
fredwriter, в NET свои, управляемые типы. Там есть и своя библиотека<vector/>, например. То есть делайте в NET, если хотите использовать ссылочные классы управляемой среды (кучи). А это тема для самообразования.
0
|
|
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
|
| 20.09.2012, 23:05 [ТС] | |
|
Не понял, что значит делайте в NET? Я понял, что в NET есть свои управляемые типы, и <vector/>. То есть мне в классе использовать какие-то заголовочные файлы NET и в NET есть такой-же класс как вектор или я не так понял?
0
|
|
|
Комп_Оратор)
|
||
| 20.09.2012, 23:15 | ||
|
#include <vector/> которая позволяет объявить и использовать тип. В NET свои массивы, векторы, списки... Но это нужно читать. Книги (их не много), MSDN... Поэтому и не рвётся никто отвечать на такие вопросы. Я показал как подключить класс. Но как использовать типы и библиотеки, - места не хватит. Впрочем это и не сложно. Обычно. Однако нужно почитать. Но некоторые вещи и не возможно сделать, - С++ Cli не поддерживает множественное наследование, например.
0
|
||
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
|
| 20.09.2012, 23:47 [ТС] | |
|
Я целых полтора дня потратил на изучение vector'a, думал, ура, теперь буду использовать двумерный вектор в классе, радовался, а теперь оказывается придется опять что-то читать и изучать. Посоветуйте литературу (желательно на русском) и я создам тему на тему векторы, массивы в NET.
0
|
|
|
Комп_Оратор)
|
|
| 20.09.2012, 23:59 | |
|
Хортон А. Базовый курс Visual C++ 2005: Базовый курс. //есть и для 2010
Пахомов Б.И. С/С++ и Visual C++ 2008 для начинающих. Не волнуйтесь, - есть свой вектор. Посмотрите, ещё в заголовке раздела, различия C++NEТ и C# или как-то так. Я если найду - кину ссылку. ![]() зы:Если Вы только начали изучение С++, лучше его и учите. C++/NET, - никуда не денется. Нужно будет быстро GUI сделать, - овладеете. Но правильнее учить чистый С++ сначала (имхо).
0
|
|
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
|
| 21.09.2012, 00:29 [ТС] | |
|
За литру спасибо. Про вектор интересно
. Мне в университете задали написать класс именно для WinForm, поэтому придется изучать NET. Я C++ изучаю по книге Герберта Шилдта - Самоучитель С++.
0
|
|
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
|||||||||||
| 21.09.2012, 19:28 [ТС] | |||||||||||
|
Переписал класс без использования вектора, просто массивы использую.
1>Matrix_Lite.obj : error LNK2020: неразрешенная лексема (06000001) Matrix_of_Light::step_out_inv 1>Matrix_Lite.obj : error LNK2020: неразрешенная лексема (06000002) Matrix_of_Light::step_out_det 1>Matrix_Lite.obj : error LNK2020: неразрешенная лексема (06000003) Matrix_of_Light::.ctor 1>Matrix_Lite.obj : error LNK2020: неразрешенная лексема (06000004) Matrix_of_Light::~Matrix_of_Light 1>Matrix_Lite.obj : error LNK2020: неразрешенная лексема (06000005) Matrix_of_Light::elem_trans_inverse 1>Matrix_Lite.obj : error LNK2020: неразрешенная лексема (06000006) Matrix_of_Light::Res 1>Matrix_Lite.obj : error LNK2020: неразрешенная лексема (06000007) Matrix_of_Light::elem_trans_determ 1>d:\мои документы\visual studio 2010\Projects\Matrix_Lite\Debug\Matrix_L ite.exe : fatal error LNK1120: 7 неразрешенных внешних элементов Подключаю #include "Class_Matrix.h" в cpp проекта. Вот код класса: .h
...понятно, на конструктор он тоже ругается, в тексте ошибки он его почему-то .ctor обозвал. Добавлено через 17 минут нашел на одном форуме похожую тему, там написали, что шаблоны нельзя выносить в .cpp файл. Переместил, те функции, которые у меня уже были описаны в хедэр и они перестали отображаться как запрещенные лексемы, значит вроде как решил проблему?
0
|
|||||||||||
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||
| 21.09.2012, 20:13 | ||||||
|
Ошибки сыпятся потому-что нет реализаций всех методов и конструктора.
Хотя бы пустые скобки поставьте пока
Зачем проблемы ? MSDN Array
1
|
||||||
|
Комп_Оратор)
|
|||||||
| 21.09.2012, 20:23 | |||||||
|
например одномерный массив целых объявляется так:
А типы родного С++ в ref class'ах не живут.
0
|
|||||||
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
|
| 21.09.2012, 20:46 [ТС] | |
|
Хорошо уговорили, буду использовать CLI array, только мне не очень понятно, зачем так делать: на числом С++ один массив, на CLI другой, неужели нельзя было какой-нибудь один оставить? Ладно, хорошо, пусть хоть десять, но сделали бы их не конфликтующими... Но тогда все бы пользовались каким-нибудь одним. Заставляют они что-ли таким образом? Не скорее всего я просто что- нибудь не знаю важного в этом всём деле.
0
|
|
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|||||||||||||||||
| 21.09.2012, 22:50 | |||||||||||||||||
|
Не по теме: хотел сразу написать но у меня интернет отрубился Не, ну смешивать то можно, хотел сказать, зачем напрягаться ? ![]() Например на форме текстбокс и кнопка . Создаем матрицу в своем классе ( неуправляемом ) и выводим на форму в текстбокс MyClass.h
0
|
|||||||||||||||||
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
||
| 21.09.2012, 22:55 [ТС] | ||
|
У меня появилась еще один вопрос. В проекте, по нажатии на одну из кнопок, я инициализировал двумерный массив данными, введенными пользователем в dataGridView, и это работало и с векторами, и с динамическими массивами, и сейчас прекрасно работает с CLI:array.
0
|
||
|
Комп_Оратор)
|
||
| 21.09.2012, 23:16 | ||
![]() Тут внизу окна надыбал: Использование структур в управляемом классе (класс окна Windows Forms)
0
|
||
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
||||
| 22.09.2012, 00:24 [ТС] | ||||
|
Переделал на CLI array, те же ошибки, что были с динамическими C++ - те же неразрешенные лексемы.
На секундочку, у меня в хедере работало и с динамическими от C++. Добавлено через 28 минут Добавлено через 30 минут Ура, экземпляр класса создался!!! Класс весь в хедере.
0
|
||||
| 22.09.2012, 00:24 | |
|
Помогаю со студенческими работами здесь
20
Использование WinINet в Windows Forms Использование string в Windows Forms Application
Чтение переменных класса из файла в Windows Forms Array из собственного класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|