@Acaunt

Можно ли при вызове функции указать в него тип данных?

Хочу создать перегруженную функцию поиска типа данных в документе. Решение я уже знаю:
Решение
void search(int *tip, std::string str) {
    /*
    Поиск и проверка параметра
    */
    *tip = 5; // вместо 5 найденное значение
     // Написал для примера
}
void search(std::string *tip, std::string str) {
    /*
    Поиск и проверка параметра
    */
    *tip = "Просто пример";
}

int main() {
    int a;
    std::string b;
    search(&a, "a");
    search(&b, "b");
}

Но первая мысль, которая пришла мне в голову, скорее всего неправильная, вот такая:
Мысль
auto search(int, std::string str) {
    /*
    Поиск и проверка параметра
    */
    return 5; // вместо 5 найденное значение
     // Написал для примера
}
auto search(std::string, std::string str) {
    /*
    Поиск и проверка параметра
    */
    return "Просто пример";
}

int main() {
    int a = search(int, "a");
    std::string b = search(std::string, "b");
}

Можно ли сделать что-нибудь подобное?
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
@dima20155
you don't choose c++. It chooses you
Полагаю, что вам удобно будет использовать здесь шаблоны, если я правильно понял вопрос.
Например:
template <typename T>
auto search (std::string str) {
    // T - data type
    T res;
    // do something
    return res;
}

int main () {
    auto a = search<int>("a");
    auto b = search<std::string>("a");
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы