Форум программистов, компьютерный форум CyberForum.ru

Шаблоны в C++ - C++

Восстановить пароль Регистрация
 
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
24.04.2014, 21:23     Шаблоны в C++ #1
Здравствуйте!

Написал такой код:
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <QtCore/QCoreApplication>
#include <iostream>
#include <string>
 
using namespace std;
 
template <typename T>
T getValue(string, T);
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    double pNOD = (double)getValue("Введите вероятность необнаружения ошибки:", 0.0);
    double pO   = (double)getValue("Введите вероятность искажения символов:", 0.0);
    int    k    = (int)getValue("", 0);
 
    cout << pNOD << " " << pO << " " << k << endl;
 
    return a.exec();
}
 
template <typename T>
T getValue(string str, T value) {
    cout << str << endl;
    cin >> value;
    while(!cin) {
        cout << "Вы ввели некорректное число! Попробуйте ещё раз:" << endl;
        cin.clear();
        cin.ignore();
        cin >> value;
    }
    return value;
}


Собственно вопрос: Можно ли как-то изменить функцию getValue, чтобы не передавать ей не нужный параметр для указания конкретного типа данных T. Или к примеру, чтобы в качестве второго параметра просто указывать double, float или int.

Заранее спасибо за Ваш ответ!

Добавлено через 5 минут
Сделал другой велосипед, но реализация всё равно кажется корявой
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#define TYPE_DOUBLE 0.0
#define TYPE_INT 0
#include <QtCore/QCoreApplication>
#include <iostream>
#include <string>
 
using namespace std;
 
template <typename T>
T getValue(string, T);
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    double pNOD = (double)getValue("Введите вероятность необнаружения ошибки:", TYPE_DOUBLE);
    double pO   = (double)getValue("Введите вероятность искажения символов:", TYPE_DOUBLE);
    int    k    = (int)getValue("", TYPE_INT);
 
    cout << pNOD << " " << pO << " " << k << endl;
 
    return a.exec();
}
 
template <typename T>
T getValue(string str, T value) {
    cout << str << endl;
    cin >> value;
    while(!cin) {
        cout << "Вы ввели некорректное число! Попробуйте ещё раз:" << endl;
        cin.clear();
        cin.ignore();
        cin >> value;
    }
    return value;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 21:23     Шаблоны в C++
Посмотрите здесь:

шаблоны C++
«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». C++
Шаблоны в C++ C++
Шаблоны C++
C++ Шаблоны
Помогите писать на С++ через шаблоны. Консуле я писал, но надо писать исползуя шаблоны C++
C++ Шаблоны C++11
Шаблоны C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
24.04.2014, 22:00     Шаблоны в C++ #2
типа этого?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
template <typename T>
T get_value( const std::string &str )
{
    T value;
    cout << str << endl;
    cin >> value;
    while(!cin) {
        cout << "Вы ввели некорректное число! Попробуйте ещё раз:" << endl;
        cin.clear();
        cin.ignore();
        cin >> value;
    }
    return value;
}
 
...
 
int main( int argc, char **argv ) 
{
 
    std::cout << get_value<double>("double ") << "\n";
    std::cout << get_value<int>("int ") << "\n";
 
    return 0;
}
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
24.04.2014, 22:02  [ТС]     Шаблоны в C++ #3
Спасибо большое! Просто я C++ не особо знаю
Yandex
Объявления
24.04.2014, 22:02     Шаблоны в C++
Ответ Создать тему
Опции темы

Текущее время: 14:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru