Узнать какой экземпляр класса вызвал функцию
- Войдите на сайт для отправки комментариев
Здравствуйте, подскажите, пожалуйста, как бы изящнее реализовать задумку.
Есть класс с рядом свойств и методов, создается ряд экземпляров этого класса, которые в свою очередь вызывают функцию f1, хотелось бы внутри этой функции f1 понять какой именно из экземпляров класса вызвал ее, и в зависимости от этого работать с переменными именно этого экземпляра.
По всему проще всего было реализовать эту функцию f1 как метод класса, тут и переменные все будут. Но это не возможно, так как работаю с таймером уважаемого DetSimen и внутри класса его работа сопряжена с непреодолимыми для меня трудностями. На данном этапе, я наплодил лишних переменных на входе f1 в которые каждый экземпляр класса при выполнении f1 отправляет свои данные. Но было бы гораздо красивее, если не рализовать f1 как метод класса, то хотябы использовать конкретные переменные вызвавшего f1 объекта.
https://www.tutorialspoint.com/cplusplus/cpp_this_pointer.htm
навскидку, если бы мне из таймерного события потребовалось бы вызывать метод класса, я бы сделал диспетчер, сопсно, я так и сделал через очередь сообщений.
либо, в f1 передавать указатель на конкретный экземпляр, как правильно сказал sadman, через this.
Суть задачи была в работе с однотипными наборами датчиков и выключателей, их очень удобно бы было представить как объекты класса, и все бы ничего, но нужно посылать на выключатели импульс, который я отсчитываю таймером,
Такое решение мне кажется логичным простым и понятным. Хотя и пришлось разбить на 2 метода, начала подачи импульса и его окончание. Красивее придумать не смог.
Все бы хорошо, но в нутри класса невозможно использовать таймер. Поэтому, видимо, придется вытащить за пределы класса процедуры start_impulse и stop_impulse, но тогда им нужно будет передавать ряд параметров для работы и логирования (здесь убрал часть кода), соответственно нужно завести еще десяток переменных для хранения этого добра вне класса, и возможна коллизия в случае одовременной (в течение 100 мс) работы. Вот и вернулся к мысли упростить это.
Ex vasya00, если было бы так просто , то и смысла в моих темах не было. Так что попробуйте эти варианты.
http://arduino.ru/forum/programmirovanie/klassy-arduino-po-qwone-dlya-ch...
http://arduino.ru/forum/programmirovanie/tsifrovye-avtomaty-v-klassakh-p...
Или ищите еще варианты решений.