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

Не понятный глюк вызова перегруженной функции - C++

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.11.2013, 08:23     Не понятный глюк вызова перегруженной функции #1
C++
1
2
3
void f  (std::wfstream&, bool, const char*, size_t , size_t);
void f  (std::wfstream&, int, const char*, size_t , size_t);
void f  (std::wfstream&, enum, const char*, size_t , size_t);
, с фактическим параметром-явной константой вызывается вторая функция, а нужна третья. И прототипы, и сами функции имеются в наличии.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2013, 08:23     Не понятный глюк вызова перегруженной функции
Посмотрите здесь:

Не понятный глюк с cout C++
C++ сравнение строк в перегруженной функции
неоднозначый вызов перегруженной функции C++
C++ Создание перегруженной функции
C++ Найти ошибку в перегруженной функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
03.11.2013, 08:32     Не понятный глюк вызова перегруженной функции #2
вроде enum - это тот же int

Добавлено через 1 минуту
может typedef использовать для более тонкой настройки
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
03.11.2013, 08:39     Не понятный глюк вызова перегруженной функции #3
Просто на всякий случай.
Цитата Сообщение от taras atavin Посмотреть сообщение
с фактическим параметром-явной константой
"Явная константа" - это так?
C++
1
2
3
4
5
6
7
8
enum State { On, Off };
 
void f(State);
void f(int);
 
// ...
 
f(On);
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.11.2013, 09:16  [ТС]     Не понятный глюк вызова перегруженной функции #4
Константы бывают явные и именованные, именованные декларируются и имеют имена, потому так и называются, а явные - это всё остальное. Например, в
C++
1
for (i=0; i<10; ++i)
ноль и десятка - явные константы,
Pascal
1
2
3
4
5
const n=10;
var i:integer;
begin
       for i:=0 to n do;
end.
(не знаю, есть ли плюсовый аналог) 0 - явная константа, n - именованная, 10 в декларации n - явная констант. В
C++
1
char a='b';
'b' - явная константа.

Добавлено через 50 секунд
Цитата Сообщение от 0x10 Посмотреть сообщение
enum State { On, Off };
void f(State);
void f(int);
// ...
f(On);
Приблизительно, только у меня тип другой. Так как вызвать третью функцию, не заводя для этого переменную?

Добавлено через 2 минуты
Цитата Сообщение от chedman Посмотреть сообщение
вроде enum - это тот же int
Допустим. Но ведь мессаги о повторе прототипа не было, значит он только основан на инте, но не инт.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
03.11.2013, 09:28     Не понятный глюк вызова перегруженной функции #5
В общем, реквестирую sscce, ибо у меня не вроспроизводится.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
enum State {On, Off};
 
void f(bool) { std::cout << "bool" << std::endl; }
void f(int) { std::cout << "int" << std::endl; }
void f(State) { std::cout << "enum" << std::endl; }
 
int main()
{
    f(On);
    f(11);
}
Вывод:
enum
int
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.11.2013, 09:41  [ТС]     Не понятный глюк вызова перегруженной функции #6
Глюк пофиксен, оказалось, что кодоблоки умудрились не сохранить изменения в файле прототипов.
MrGluck
03.11.2013, 09:50
  #7

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Глюк пофиксен
Я буду жить не смотря ни на что!

taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.11.2013, 09:56  [ТС]     Не понятный глюк вызова перегруженной функции #8
MrGluck, я не Вас имел ввиду. И не композитора Глюка.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
03.11.2013, 13:52     Не понятный глюк вызова перегруженной функции #9
"явная константа" - это литерал.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.11.2013, 11:42  [ТС]     Не понятный глюк вызова перегруженной функции #10
Литералы представляют собой константы, непосредственно включаемые в текст программы в отличие от прочих данных
То есть литерал - вид константы. Так почему бы этому термину не иметь составной синоним со словом "константа"?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2013, 16:25     Не понятный глюк вызова перегруженной функции
Еще ссылки по теме:

C++ Неоднозначный вызов перегруженной функции
C++ Неоднозначный вызов перегруженной функции
C++ Pow: неоднозначный вызов перегруженной функции

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
04.11.2013, 16:25     Не понятный глюк вызова перегруженной функции #11
Потому что "явная константа" можно понимать как угодно, а литерал - однобоко.
Yandex
Объявления
04.11.2013, 16:25     Не понятный глюк вызова перегруженной функции
Ответ Создать тему
Опции темы

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