Как вызвать метод класса, если его имя в переменной на arduino(C)? Как вызвать метод класса, если его имя в переменной? extern char buffer[100]; - содержит в себе A.start(); как вызвать метод start класса A? Тем более строки как таковой нет, есть только массив из символов.
Для вызова метода класса по имени, хранящемуся в переменной на Arduino (C++), можно использовать указатель на метод. В вашем случае, если переменная buffer содержит строку "A.start();", можно попробовать следующий код:
class A { public: void start() { // код метода start } }; A objA; void setup() { // код инициализации } void loop() { if (strcmp(buffer, "A.start();") == 0) { (objA.*(&A::start))(); // вызов метода start класса A } }
В данном примере создается объект objA класса A, и при сравнении содержимого переменной buffer с "A.start();" вызывается метод start объекта objA.
Если нужно вызвать метод класса, имя которого хранится в переменной типа char[], можно использовать библиотеку . Примерно так:
#include <functional> class A { public: void start() { // код метода start } }; A objA; void setup() { // код инициализации } void loop() { if (strcmp(buffer, "start") == 0) { std::function<void()> func = std::bind(&A::start, objA); // создание функционального объекта для вызова метода func(); // вызов метода start класса A } }
В данном примере при сравнении содержимого переменной buffer с "start" создается функциональный объект func, который вызывает метод start объекта objA при вызове.
Для вызова метода класса по имени, хранящемуся в переменной на Arduino (C++), можно использовать указатель на метод. В вашем случае, если переменная buffer содержит строку "A.start();", можно попробовать следующий код:
class A {public:
void start() {
// код метода start
}
};
A objA;
void setup() {
// код инициализации
}
void loop() {
if (strcmp(buffer, "A.start();") == 0) {
(objA.*(&A::start))(); // вызов метода start класса A
}
}
В данном примере создается объект objA класса A, и при сравнении содержимого переменной buffer с "A.start();" вызывается метод start объекта objA.
Если нужно вызвать метод класса, имя которого хранится в переменной типа char[], можно использовать библиотеку . Примерно так:
#include <functional>class A {
public:
void start() {
// код метода start
}
};
A objA;
void setup() {
// код инициализации
}
void loop() {
if (strcmp(buffer, "start") == 0) {
std::function<void()> func = std::bind(&A::start, objA); // создание функционального объекта для вызова метода
func(); // вызов метода start класса A
}
}
В данном примере при сравнении содержимого переменной buffer с "start" создается функциональный объект func, который вызывает метод start объекта objA при вызове.