Как передать указатель на метод экземпляра класса, как параметр конструктора?
Добрый вечер, подскажите.
Я написал класс чтения из pipe и заметил, что сообщения дробятся, по этому я решил создать класс буферизатора, который будет накапливать прочтенные данные. Класс, читающий данные из pipe, в своем конструкторе имеет параметр, указывающий, какую функцию надо вызвать, когда приходят данные и туда я хочу передать функцию из класса буферизатора. Напрямую это сделать нельзя, так как функция экземпляра не является static. Я начал читать про путь с использованием подставного callback, но потом наткнулся, что можно использовать std::function и std::bind. Вот это я и попытался сделать, но так и не понял, как довести дело до ума.
В классе, который читает данные из pipe я определил
class NamedPipeClass < NamedPipeClass(char* _pipeName, bool isClient, std::functionReadCallBack) < . onReadCallback = ReadCallBack; >; std::function onReadCallback; >
И создавая экземпляр класса
MessageCollectorClass* msgCollector = new MessageCollectorClass(); NamedPipeClass* hltPipe = new NamedPipeClass(myfifo, true, std::bind(&msgCollector::AddData, this, std::placeholders_1));
но это не правильно. Подскажите, как это сделать корректно?
- Вопрос задан более трёх лет назад
- 770 просмотров
Как передать объект в метод java
Для передачи объекта в метод необходимо объявить параметр метода, который будет принимать объект нужного типа. Например:
public void someMethod(MyObject obj) // тело метода >
В данном примере метод someMethod принимает объект класса MyObject , передаваемый в качестве аргумента метода. Чтобы передать объект в метод, необходимо создать экземпляр класса, и использовать его в качестве аргумента метода. Например:
MyObject obj = new MyObject(); someMethod(obj);
Здесь мы создали экземпляр класса MyObject и передали его в метод someMethod . Внутри метода someMethod мы можем работать с переданным объектом, вызывая его методы или обращаясь к его полям.
Как передать экземпляр класса?
Здравствуйте. Для работы с определенной платой АЦП (есть оригинальная библиотека на С++ и ее враппер на Python ). Решил использовать Python . Знаком с ним уже 2 дня. Цель программы измерять несколько напряжений и находить между ними закономерности.
Приблизительно то, что хочу получить для начала:
1. класс, где определяется структура данных
1 2 3 4 5 6
class DataStruct(object): def __init__(self): self.gain = 1 # ADC's Gain parameter self.sps = 25 # ADC's SPS parameter self.AllChannelValuesVolts = [0,0,0,0,0,0,0,0] self.AllChannelValues = [0,0,0,0,0,0,0,0]
2. Основной модуль с tkinter, который создает экземпляр DataStruct и должен передать его в модуль 3
3. Модуль с функцией, которая выполняет периодический опрос платы и изменяет данные в полученном экземпляре. Вот, в приблизительно таком виде работает.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
import ads1256 # import this lib import dataStruct gain = 1 sps = 25 AllChannelValuesVolts = [0,0,0,0,0,0,0,0] AllChannelValues = [0,0,0,0,0,0,0,0] ads1256.start(str(gain),str(sps)) def ReadData(): AllChannelValues = ads1256.read_all_channels() for i in range(0, 8): AllChannelValuesVolts[i] = (((AllChannelValues[i] * 100) /167.0)/int(gain))/1000000.0 threading.Timer(0.1, foo).start()
Но как переписать его, что бы в этот модуль передать экземпляр DataStruct вместо создания переменных gain, sps, AllChannelValuesVolts, AllChannelValues. Собственно суть вопроса: как в функцию передать экземпляр класса, или точнее как принять его в функции , чтобы можно было обратиться в свойствам экземпляра? Меня, привыкшего к строгой типизации, этот вопрос ставит в тупик. Сам найти ответ не сумел. Буду благодарен за любой пример, где функция принимает экземпляр класса.
Заранее спасибо.
Как передать тип экземпляра класса в метод

Как передать объект класса в метод класса?
Здравствуйте, каким образом передать объект класса в метод класса? Вот код: class Program

Передача экземпляра класса в метод
Всем привет случайно столкнулся с данной проблемой. Есть простой класс public class.

Как передать тип класса и создать его в другом классе?
Добрый день, форумчане! Есть у меня классы юнитов — Walk, Strong, Fast. Все от абстрактного класса.

Универсальный метод добавления экземпляра класса
Добрый день! Есть несколько классов, основными полями в которых являются Id и Description. Могут.
![]()
6451 / 3980 / 1587
Регистрация: 09.05.2015
Сообщений: 9,339
Чтобы это работало, нужно указать ограничение на тип T в виде интерфейса или какого-то базового класса, в котором имеется метод GetID().
static void FindT>(ListT> Faculty, T A) where T : какой-то интерфейс или класс