Вызов метода класса по его имени

185
22 марта 2018, 09:28

Я пытаюсь сделать что-то подобное

class Arguments {
        /* implimentation */
};
class Base {};
class One: public Base {
        private:
                int val;
        public:
                One(int val_): val(val_) {}
                Arguments test_one(Arguments args) {
                        printf("my int is: %d", val);
                        return Arguments("ok")
                };
};
class Two: public Base {
        private:
                std::string val2;
        public:
                Two(std::string val_): val2(val_) {};
                Arguments test_two(Arguments args) {
                        printf("my string is: %s", val2.c_str());
                        return Arguments("ok");
                };
};
std::map<std::string, Base*> components = {{"test1", new One(123)}, {"test2", new One(321)}, {"test3", new Two("test")}}
Arguments invoke(std::string comp, std::string name, Arguments args) {
        //getMethod?
        return components[comp]->getMethod(name)(args);
}
invoke("test1", "test_one", Arguments())
invoke("test2", "test_one", Arguments())
invoke("test3", "test_two", Arguments())

Функциия invoke должна принимать строку с ключём, который предоставляет доступ к какому-то классу, а вторая строка - это имя метода класса

READ ALSO
QTcpSocket + QDataStream

QTcpSocket + QDataStream

Доброго дня! Есть устройство с которого нужно считывать строку в ACSII протокол общения TCP/IPЕсть рабочий код:

196
Чтение логов Win - C++

Чтение логов Win - C++

Необходимо написать программу, которая бы читала лог-файлы ВидовсПроблема в том, что мы этого ещё не учили, а курсовую делать нужно

196
Задача с нахождением высоты

Задача с нахождением высоты

Школьная задача C++, решить не могу, подскажите в чем ошибка или просто намекните как по другому ее решать?

190