![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
gutalin93 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 1.6.2013 Репутация: нет Всего: нет |
здравствуйте, подскажите пожалуйста как правильно из обработчика кнопки ( находится в Form1.h) вызвать код из основного .срр файла (допустим функцию main)? среда microsoft visual c++ 2010
когда пишу просто
пишет что new_func: идентификатор не найден сейчас весь код у меня написан в обработчике кнопки в файле Form1.h, это заказчика бесит) |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: нет Всего: 5 |
Я не знаю, можно ли вообще вызвать в managed- или смешанном С++ коде функцию main. предполагаю, что нет (я вообще не особо лихой специалист).
Но суть стиля программирования в С++ заключается в том, что в include файлах (.h,.hpp) ты пишешь объявления функций и классов, а определения функций уже в c++ файлах. Функцию ты можешь вызвать только тогда, когда она есть у тебя в поле видимости (хотя бы объявление функции предшевствует её использованию). И тут тебя не обрадую. Функция main это особая функция, которую я не видел, чтобы где-то в традиционном C++ объявляли в .hpp файле. ДА и заказчик, скорее всего, хотел тебе намекнуть, чтобы ты в .hpp оставил объявления функций и классов, а реализацию перенес в .cpp файл. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
EgoBrain |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: 1 Всего: 2 |
Может он в качестве входной точки указал другую функцию и написал еще main для обфускации..
Как тебе и сказали, реализация должна быть в cpp файле. |
||||
|
|||||
dzaraev |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 12.1.2013 Репутация: 1 Всего: 1 |
Как уже упомянули - реализующий код пишется в .cpp, в .h соответственно - код объявляющий. Советую сделать - как просит заказчик, не показывайте свою некомпетентность. Значит компилятор, обрабатывая ваш .h файл не нашел - где объявлен метод new_func. Необходимо подключить к сборке с формой сборку в которой объявлен new_func и в файле с формой подключить соответствующий неймспейс (using ) или .h файл (#include) Функцию Main, кстати можно спокойно вызвать: Main.cpp
FooHeader.h
Фишка Main функции в том, что её вызов помещается в PE заголовок (для .NET сборок соответственно в CLR заголовок), чтобы обозначить точку входа для модуля. В остальном - обычная функция. Это сообщение отредактировал(а) dzaraev - 2.7.2013, 10:21 --------------------
Если вопрос решён - помечайте тему. |
||||
|
|||||
gutalin93 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 1.6.2013 Репутация: нет Всего: нет |
спасибо большое, действительно ничего сложного теперь обращаюсь и к main и к др функциям,
как-то так: сначала объявление, потом вызов
непонятно правда зачем ^ нужен |
|||
|
||||
dzaraev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 12.1.2013 Репутация: 1 Всего: 1 |
Насколько знаю, символ ^ - идентифицирует reference тип CLR.
Если же используется value-тип, то ^ не ставится. Например, в обозначении типа
тип array<> - ссылочный (reference-type) CLR тип, поэтому справа от него ставится "^", а тип System::Byte - это значимый тип (value-type), поэтому рядом с ним "^" не указывается. Это сообщение отредактировал(а) dzaraev - 3.7.2013, 16:00 --------------------
Если вопрос решён - помечайте тему. |
|||
|
||||
gutalin93 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 1.6.2013 Репутация: нет Всего: нет |
спасибо, последний вопрос...честно говоря до сих пор к некоторым вещам си++ не могу привыкнуть, например пришел мне массив типа unsigned char, даже элементарно не получается один символ в переменную unsigned char записать, не говоря уже о приведении типов, не понятно почему....
пробовал по этой статье http://cppstudio.com/spravochnik/sintaksis...e-tipov-dannyx/ |
|||
|
||||
gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
Модератор: Пожалуйста, один топик - один вопрос.
|
|||
|
||||
dzaraev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 12.1.2013 Репутация: 1 Всего: 1 |
gutalin93, На счет чистого С++ я затрудняюсь ответить, потому, что не понимаю в чем конкретно проблема.
Судя по предыдущим постам, вы всёже пишете на C++\CLI (это другой язык, не эквивалентный C++). И, тем не менее, мне не понятен вопрос. На всякий случай - вот пример копирования из нативного массива unsigned char* в массив элементов эквивалентного CLR типа - System::Byte: http://stackoverflow.com/a/6541406 Еще, тоже на всякий пожарный - таблица соответствия нативных типов - типам CLR: http://msdn.microsoft.com/ru-ru/library/0wf2yk2k.aspx Это сообщение отредактировал(а) dzaraev - 5.7.2013, 08:17 --------------------
Если вопрос решён - помечайте тему. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |