Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
#1

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

03.11.2013, 08:23. Просмотров 394. Ответов 10
Метки нет (Все метки)

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);
, с фактическим параметром-явной константой вызывается вторая функция, а нужна третья. И прототипы, и сами функции имеются в наличии.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2013, 08:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не понятный глюк вызова перегруженной функции (C++):

Не понятный глюк с cout
Дня доброго Есть небольшая програмулина #include<iostream>...

Ввод данных в функции конструктора и использование их в перегруженной функции
Вот собственно код, как его исправить, что бы не было ошибки. Пишет что...

Создание перегруженной функции
Создайте перегруженные функции для вычисления абсолютной величины числа. Одна...

Неоднозначный вызов перегруженной функции
Ввести с клавиатуры число n. Динамически выделить память для массива целых...

Неоднозначый вызов перегруженной функции
#include "stdafx.h" #include <iostream> #include <cmath> using namespace...

Неоднозначный вызов перегруженной функции
#include "stdafx.h" #include <cstdlib> #include <iostream> #include <math.h>...

10
chedman
81 / 80 / 9
Регистрация: 30.10.2013
Сообщений: 251
03.11.2013, 08:32 #2
вроде enum - это тот же int

Добавлено через 1 минуту
может typedef использовать для более тонкой настройки
0
0x10
2554 / 1734 / 285
Регистрация: 24.11.2012
Сообщений: 4,361
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);
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
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
Допустим. Но ведь мессаги о повторе прототипа не было, значит он только основан на инте, но не инт.
0
0x10
2554 / 1734 / 285
Регистрация: 24.11.2012
Сообщений: 4,361
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
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
03.11.2013, 09:41  [ТС] #6
Глюк пофиксен, оказалось, что кодоблоки умудрились не сохранить изменения в файле прототипов.
0
MrGluck
03.11.2013, 09:50
  #7

Не по теме:

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

0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
03.11.2013, 09:56  [ТС] #8
MrGluck, я не Вас имел ввиду. И не композитора Глюка.
0
gray_fox
What a waste!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 3
03.11.2013, 13:52 #9
"явная константа" - это литерал.
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
04.11.2013, 11:42  [ТС] #10
Литералы представляют собой константы, непосредственно включаемые в текст программы в отличие от прочих данных
То есть литерал - вид константы. Так почему бы этому термину не иметь составной синоним со словом "константа"?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7980 / 4861 / 1422
Регистрация: 29.11.2010
Сообщений: 13,234
04.11.2013, 16:25 #11
Потому что "явная константа" можно понимать как угодно, а литерал - однобоко.
0
04.11.2013, 16:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2013, 16:25
Привет! Вот еще темы с решениями:

Найти ошибку в перегруженной функции
Почему-то произведению присваивется размер массива. #include &quot;stdafx.h&quot;...

Pow: нет перегруженной функции
Ошибка 2 error C2661: pow: нет перегруженной функции, принимающей 1...

Сравнение строк в перегруженной функции
Здравствуйте! есть перегруження функция Block* BlocksList::Find(string...

Неоднозначный вызов перегруженной функции
Ошибка 1 error C2668: hash_helper::hash: неоднозначный вызов перегруженной...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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