с помощью string ,надо через cin написать название функций, чтобы оно заработало в созданной функцией Showinfo!! (не могу написать правильно код ))

191
26 июня 2022, 12:10
#include <iostream>
#include <cstring>
using namespace std;

string DataFromBD()
{
    return "Data From BD";
}
string DataFromWEBSER()
{
    return "Data From WEBSER";
}
void ShowInfo(string str)
{
    cout << str << endl;
}
void main()
{
    string a;
    cin >> a;
    ShowInfo(a());// надо правильно написать здесь!
}
Answer 1

Ваша строка не может указывать на функцию. Можно сделать например так:

std::unordered_map < string, string(*)()> call{
{"DataFromBD", DataFromBD},
{"DataFromWEBSER", DataFromWEBSER}
};
string a;
cin >> a;
ShowInfo(call[a]());

или

string(*F)() = DataFromBD;
string a;
cin >> a;
if (a == "DataFromWEBSER")
    F = DataFromWEBSER;
ShowInfo(F());

По разному, только нужно как нибудь указывать на функцию.

READ ALSO
Перегрузка операторов ввода/вывода при наследовании

Перегрузка операторов ввода/вывода при наследовании

Есть базовый класс Computer и производный класс Laptop:

197
Удаление элементов массива указателей на базовый класс

Удаление элементов массива указателей на базовый класс

У меня базовый класс с двумя виртуальными методами и два класса-наследникаВ функции main есть массив указателей на базовый класс, который может...

160
Расширение массива в cpp

Расширение массива в cpp

Возможно ли реализовать реализовать именно расширение памяти? Или хотя бы при помощи манипуляций с указателями избежать лишнего копирования...

219
Где правильно требуется поставить скобки в выражении? с++ [закрыт]

Где правильно требуется поставить скобки в выражении? с++ [закрыт]

Скорее всего, данный вопрос не соответствует тематике Stack Overflow на русском, согласно правилам описанным в справке

168