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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Drozzd
0 / 0 / 0
Регистрация: 31.08.2013
Сообщений: 4
#1

Присваивание по ссылке в шаблонной функции - C++

31.08.2013, 15:39. Просмотров 317. Ответов 7
Метки нет (Все метки)

такая проблема: при попытке скомпилировать следующий код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//...
template <typename Type>
    void input(Type& result,int x, int y, string description,int size=5)
{
    stringstream ss;
    char buf[16];
 
        //...
 
    fgets(buf,size,stdin);
    
    if (typeid(string)==typeid(Type))
    {           
        //...
        ss << buf;
        result=ss.str();
        }
        //...
//...
получаю ошибку
[Error] cannot convert 'std::basic_stringstream<char>::__string_type {aka std::basic_string<char>}' to 'float' in assignment

в чем дело? и как это исправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2013, 15:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Присваивание по ссылке в шаблонной функции (C++):

Как запретить присваивание по возвращённой из функции ссылке? - C++
Вопрос вот в чём. Есть класс с вложенным объектом (допустим контейнер, но не обязательно): class Class { vector&lt;int&gt; _array;...

Создание шаблонной функции - C++
Создать шаблонную функцию, изменяющий порядок элементов таким образом: первая половина списка смещается в конец, а вторая в начало. К...

Итераторы в шаблонной функции - C++
Здравствуйте, пишу программу, в ознакомительных целях с шаблонными функциями. У меня есть функция, вычисляющая среднее арифметическое. Как...

Объявление шаблонной функции - C++
Здравствуйте, встретил в учебнике это: template &lt;typename Type, int size&gt; Type min( Type (&amp;r_array) ) { //... }

Вызов шаблонной функции - C++
Что я делаю не так? есть функция: template &lt;class T&gt; T rFF(string input_file) { string tmp; ifstream file(input_file); file...

Аргумент в виде шаблонной функции - C++
void Function(любая_функция_с_одним_параметром){} Как при помощи шаблона всунуть в аргумент функции, любую функцию с одним параметром,...

7
Croessmah
Эксперт CЭксперт С++
13415 / 7566 / 855
Регистрация: 27.09.2012
Сообщений: 18,618
Записей в блоге: 3
Завершенные тесты: 1
31.08.2013, 15:40 #2
И какого типа result?
0
Drozzd
0 / 0 / 0
Регистрация: 31.08.2013
Сообщений: 4
31.08.2013, 15:42  [ТС] #3
Добавлено через 40 секунд
Цитата Сообщение от Croessmah Посмотреть сообщение
И какого типа result?
string
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
31.08.2013, 15:48 #4
Drozzd,
C++
1
if (typeid(string)==typeid(Type))
Это сравнение на этапе выполнения. Присваивание же компилируется.
C++
1
template <typename Type>
Если есть хоть один вызов с Type отличным от string - ваш код работать не будет.
0
Drozzd
0 / 0 / 0
Регистрация: 31.08.2013
Сообщений: 4
31.08.2013, 15:50  [ТС] #5
Цитата Сообщение от ForEveR Посмотреть сообщение
Drozzd,
Если есть хоть один вызов с Type отличным от string - ваш код работать не будет.
иногда нужно float возвращать...
и как быть? писать две почти одинаковые функции?
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
31.08.2013, 15:51 #6
Drozzd, Да. Или специализации или перегрузки.
1
Drozzd
0 / 0 / 0
Регистрация: 31.08.2013
Сообщений: 4
31.08.2013, 15:53  [ТС] #7
Цитата Сообщение от ForEveR Посмотреть сообщение
Drozzd, Да. Или специализации или перегрузки.
Ясно, спасибо
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
31.08.2013, 15:57 #8
Drozzd, Можно несомненно просто написать вспомогательные функции, т.е.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void input_helper(string& result, char* buf, std::stringstream& ss)
{
    // ...
    ss << buf;
    result = ss.str();
}
void input_helper(float& result, char* buf, std::stringstream& ss)
{
}
template <typename Type>
    void input(Type& result,int x, int y, string description,int size=5)
{
    stringstream ss;
    char buf[16];
    //...
    fgets(buf,size,stdin);
    input_helper(result, buf, ss);
    // ...
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2013, 15:57
Привет! Вот еще темы с ответами:

Ошибка вызова шаблонной функции - C++
Вообщем у меня вопрос такой: Использую MVS 2010. Пишу шаблон функции для поиска максимального из двух чисел: template &lt;class T&gt; T...

Не вызывается специализация шаблонной функции - C++
Читаю книгу Прата, C++ Primer Plus. В ней есть следующее упражнение. Необходимо написать шаблонную функцию maxn(), которая принимает в...

Экспорт шаблонной функции из DLL - C++
Привет! В DLL есть класс и глобальная шаблонная функция, для получения интерфейса этого класса при динамическом подключение DLL: ...

Ошибка вызова шаблонной функции - C++ - C++
Читаю Прата, остановился на таком задании: Напишите функцию с интерфейсом в старом стиле, которая имеет следующий прототип: int...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
31.08.2013, 15:57
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru