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

Перегрузка функции, почему вызов неоднозначен? - C++

Восстановить пароль Регистрация
 
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
21.03.2013, 16:18     Перегрузка функции, почему вызов неоднозначен? #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
void Save_to_file (QString FileName, int FileIndex,float data) //Сохранение в файл данных из базы float
    {
        QString Ind;
        Ind.setNum(FileIndex);
        QFile File("D://Cells//"+FileName+Ind+".txt");
 
        File.open(QIODevice::Append | QIODevice::Text); //открываем файл для записи в конец
        QTextStream out(&File);
        out << data;
        out << "\n";
        File.close();
 
    }
void Save_to_file (QString FileName, int FileIndex,int data) //Сохранение в файл данных из базы int
    {
        QString Ind;
        Ind.setNum(FileIndex);
        QFile File("D://Cells//"+FileName+Ind+".txt");
 
        File.open(QIODevice::Append | QIODevice::Text); //открываем файл для записи в конец
        QTextStream out(&File);
        out << data;
        out << "\n";
        File.close();
 
    }
вызов:
C++ (Qt)
1
Save_to_file("Square",dirIndex,R.ThingArray()[MaxSize].Square);
Пишет, что вызов неоднозначен, кандидаты 2 вышеупомянутые функции.
Так перегрузка на то и нужна, что б я не думал какую вызывать, почему же упрямится?
Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
21.03.2013, 16:22     Перегрузка функции, почему вызов неоднозначен? #2
Какой тип возвращает это
C++
1
R.ThingArray()[MaxSize].Square
?
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
21.03.2013, 16:22  [ТС]     Перегрузка функции, почему вызов неоднозначен? #3
int
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
21.03.2013, 16:23     Перегрузка функции, почему вызов неоднозначен? #4
Полный лог ошибок выложите.
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
21.03.2013, 16:25  [ТС]     Перегрузка функции, почему вызов неоднозначен? #5
..\DefineTheCell\mainwindow.cpp: In member function 'void MainWindow::on_pushButton_2_clicked()':
..\DefineTheCell\mainwindow.cpp:294:70: error: call of overloaded 'Save_to_file(const char [7], int&, const size_t&)' is ambiguous
..\DefineTheCell\mainwindow.cpp:294:70: note: candidates are:
..\DefineTheCell\/mainwindow.h:142:10: note: void MainWindow::Save_to_file(QString, int, int)
..\DefineTheCell\/mainwindow.h:155:10: note: void MainWindow::Save_to_file(QString, int, float)

Без перегрузки все работает замечательно
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
21.03.2013, 16:25     Перегрузка функции, почему вызов неоднозначен? #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template < typename T >
void Save_to_file (const QString &FileName, int FileIndex, const T &data) //Сохранение в файл данных из базы float
    {
        QString Ind;
        Ind.setNum(FileIndex);
        QFile File("D://Cells//"+FileName+Ind+".txt");
 
        File.open(QIODevice::Append | QIODevice::Text); //открываем файл для записи в конец
        QTextStream out(&File);
        out << data;
        out << "\n";
        File.close();
 
    }
Так не?
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
21.03.2013, 16:27     Перегрузка функции, почему вызов неоднозначен? #7
Цитата Сообщение от Sor Посмотреть сообщение
const size_t&
Это не int. В общем случае это unsigned int. И компилятор не знает к какому виду приводить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2013, 16:33     Перегрузка функции, почему вызов неоднозначен?
Еще ссылки по теме:

C++ перегрузка функции
Перегрузка функций и операторов, почему программа не работает? C++
C++ Перегрузка операторов - Оба случая работают правильно, почему так?

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

Или воспользуйтесь поиском по форуму:
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
21.03.2013, 16:33  [ТС]     Перегрузка функции, почему вызов неоднозначен? #8
Цитата Сообщение от ISergey Посмотреть сообщение
Так не?
так да.
Toshkarik, да, ошибся. это size_t.

спасибо
Yandex
Объявления
21.03.2013, 16:33     Перегрузка функции, почему вызов неоднозначен?
Ответ Создать тему
Опции темы

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