|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.03.2012, 10:32 | #1 |
Пользователь
Регистрация: 15.03.2012
Сообщений: 57
|
C++. Две функции в разных файлах мешают друг другу.
Функция average(3, 6) возвращает число типа int, которое является средним арифметическим от двух аргументов типа int, когда она вызывается в одном файле, и возвращает число типа double, которое является средним арифметическим от двух аргументов типа int, когда она вызывается в другом файле в одной и той же программе.
// 1 файл Код:
Код:
Как вообще можно написать эти функции чтобы небыло ошибок? Я пробовал эти функции делать статическими (static), только все равно ничего не получается. |
17.03.2012, 10:58 | #2 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Правильно поставленная задача - три четверти решения.
|
19.03.2012, 13:10 | #3 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 505
|
Код:
Код:
обзови ее по другому и будет тебе счастье Код:
Знающий не говорит, говорящий не знает (С) Лао Цзы
|
19.03.2012, 19:43 | #4 |
Пользователь
Регистрация: 15.03.2012
Сообщений: 57
|
Вот я цитату приведу из книги Стивен Прата 'Язык программировния С++. Лекции и упражнения'.
"Можно воспользоваться ключевым словом static, чтобы придать функции внутреннее связывание, ограничивая ее использование одним файлом." Может быть я чего то непонимаю или что-то с компилятором, но у меня ничего не работает. Тут надо написать две функции с одинаковыми именами. Они отличаются только типом возвращаемого значения. |
19.03.2012, 19:49 | #5 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
А вы когда нибудь читать то что выдаёт компилятор будете?
Вот вам вопрос функции должны отличаться сигнатурой функции. Какими сигнатурами они должны отличаться?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 |
21.03.2012, 11:01 | #6 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 505
|
Ну тогда так
Код:
Код:
Знающий не говорит, говорящий не знает (С) Лао Цзы
Последний раз редактировалось Krok27; 21.03.2012 в 14:54. Причина: добавил приведение делителя к типу возвр. значения |
21.03.2012, 11:17 | #7 |
Пользователь
Регистрация: 15.03.2012
Сообщений: 57
|
А если a и b целые числа, тогда в return (a+b)/2; будет отбрасываться дробная часть. Для целых чисел она будет правильно работать а вот для double число будет округляться.
Может быть тут какую-нибудь проверку сделать чтобы знать какой результат должен быть, int или double? Примерно вот так: Если результат должен быть int, то return (a+b)/2, а если double, то return (a+b)/2.0; Последний раз редактировалось Крот; 21.03.2012 в 11:24. |
21.03.2012, 11:22 | #8 | |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 505
|
Цитата:
Знающий не говорит, говорящий не знает (С) Лао Цзы
|
|
21.03.2012, 11:43 | #9 |
Пользователь
Регистрация: 15.03.2012
Сообщений: 57
|
Спасибо Krok27 за помощь. Я тут вот что придумал. Буду пространства имен использовать. Так и полегче и сразу видно какую именно функцию использовать.
Код:
|
21.03.2012, 11:50 | #10 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 505
|
Ога. Можно и так.
Знающий не говорит, говорящий не знает (С) Лао Цзы
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогаем друг другу в поиске музыки | mihali4 | Свободное общение | 56 | 16.02.2017 22:03 |
Привязка окон друг к другу при перетаскивании | Alexxx5800 | Общие вопросы .NET | 2 | 10.10.2010 20:19 |
Данные по столбцам - упорядочить данные к друг другу | PetroD | Microsoft Office Excel | 10 | 07.08.2010 12:30 |
Работа с данными в разных файлах | arc | Microsoft Office Excel | 4 | 28.04.2010 15:15 |