Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
9 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 98

Передача параметров в функцию

16.05.2017, 16:35. Показов 691. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Составляю дополнительный класс для работы с камерой. Есть библиотека содержащая класс Camera.
Хочу создать поток, в качестве параметров указывается объект класса Camera:
Синтаксис:
C++
1
2
3
4
5
uintptr_t _beginthread( // NATIVE CODE  
   void( __cdecl *start_address )( void * ),  
   unsigned stack_size,  
   void *arglist   
);
Реализация:
C++
1
2
3
4
5
thread = (HANDLE)_beginthread(TransmitDataThread, 0, _cam);
 
void TransmitDataThread(void*_cam) {
    _cam.WriteRegister(0x1120, 0x80080001, true);
}
Собственно запутался в указателях...

Добавлено через 42 минуты
Точнее такая реализация.
C++
1
2
3
4
Один из методов нового класса 
void Laser::SetFrequency(Camera &_cam, int _freq) {
    thread = (HANDLE)_beginthread(TransmitDataThread, 0, (void *) _cam);
}
Есть еще вариант из основного потока вызвать функцию второго потока, и в качестве параметров передать экземпляр класса
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.05.2017, 16:35
Ответы с готовыми решениями:

Передача параметров в функцию
Пишу на VS C++ 2011 Windows form application не получается передать перменную класса в функцию тип Graphich ^gr. Делаю следующим образом...

Передача параметров в функцию
Люди помогите, пожалуйста. Есть такая простая задачка: В одномерном массиве, состоящем из n элементов вычислить произведение...

Передача параметров в функцию
Помогите решить ещё одну проблему) Пароль в хэшированном виде хранится в HashData. И пока выводится на экран после хэширования. Как мне его...

7
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.05.2017, 19:48
Цитата Сообщение от sub-r-outine Посмотреть сообщение
Точнее такая реализация.
Один из методов нового класса
C++
1
2
3
void Laser::SetFrequency(Camera &_cam, int _freq) {
    thread = (HANDLE)_beginthread(TransmitDataThread, 0, (void *) &_cam);
}
0
9 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 98
16.05.2017, 19:58  [ТС]
nd2, спасибо, но это не работает, придумал такую реализацию:
C++
1
2
3
4
5
6
7
8
9
10
void Laser::SetFrequency(Camera &_cam, int _freq) {
    Camera* _camptr = &_cam;
    thread = (HANDLE)_beginthread(TransmitDataThread, 0, (void *) _camptr);
}
 
void TransmitDataThread(void* _cam) {
    Camera *_camptr = (Camera*)_cam;
    _camptr->WriteRegister(0x1120, 0x80080001, true);
...............
}
Работает, но похоже на колхоз
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.05.2017, 20:03
Цитата Сообщение от sub-r-outine Посмотреть сообщение
но это не работает,
Не компилируется?
0
9 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 98
16.05.2017, 20:06  [ТС]
nd2, "выражение должно иметь тип класса"
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.05.2017, 20:12
Цитата Сообщение от sub-r-outine Посмотреть сообщение
"выражение должно иметь тип класса"
Это по поводу чего пишет? В этом коде такая ошибка?
C++
1
2
3
void Laser::SetFrequency(Camera &_cam, int _freq) {
    thread = (HANDLE)_beginthread(TransmitDataThread, 0, (void *) &_cam);
}
0
9 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 98
16.05.2017, 20:14  [ТС]
nd2, ругается на вторую строку, слово _cam
C++
1
2
void TransmitDataThread(void* _cam) {
    _cam.WriteRegister(0x1120, 0x80080001, true);
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.05.2017, 20:56
Цитата Сообщение от sub-r-outine Посмотреть сообщение
ругается на вторую строку, слово _cam
Это не мой код. Делай так и не будет ругаться:
C++
1
2
3
void Laser::SetFrequency(Camera &_cam, int _freq) {
    thread = (HANDLE)_beginthread(TransmitDataThread, 0, (void *) &_cam);
}
Цитата Сообщение от sub-r-outine Посмотреть сообщение
C++
1
2
3
4
5
void TransmitDataThread(void* _cam) {
    Camera *_camptr = (Camera*)_cam;
    _camptr->WriteRegister(0x1120, 0x80080001, true);
//...............
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.05.2017, 20:56
Помогаю со студенческими работами здесь

Передача параметров в функцию
при вызове одной и той же функции несколько раз нужно менять одну переменную на другую, как это можно сделать, чтоб не вводить вручную...

Передача параметров в функцию
Можно ли сделать так, чтобы при совпадении переменных в функцие и основной программе, значения изменялись и в основной программе? И еще,...

Передача параметров в функцию
void f(int a) ; // передача по значению void f(int *a);//передача по ссылке void f(int &a) ; // а если так написано - что это...

Передача параметров в функцию
Кто может помочь объяснить как это должно выглядеть? Создайте приложение, в котором объявлено функцию, принимает три параметра ...

Передача параметров в функцию
Как понять , что передаётся в функцию при такой записи : void Fun(str* &r) при этом есть такие данные: struct str {int b; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru