Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/76: Рейтинг темы: голосов - 76, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 13

Что за ошибка - "Ambiguity between"?

22.04.2012, 14:14. Показов 14459. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что это за ошибка
[C++ Error] Unit1.cpp(110): E2015 Ambiguity between '_fastcall TDateTime::operator double() const' and '_fastcall TDateTime::operator int() const'
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::Button4Click(TObject *Sender)
{
  int i, k=0, N;
  fb=fopen(nb, "rb");
  while(fread(&tv, sizeof(tv),1,fb)>0) {
    SG4->Cells[0][N]=IntToStr(N);
    SG4->Cells[1][N]=String(tv.naim);
    /* ошибка здесь -> */
    SG4->Cells[2][N]=DateToStr(IncAMonth(tv.datapr,tv.srokgod));
    /* <- ошибка здесь */
  }
  {
    SG4->Cells[0][0]="¹";
    SG4->Cells[1][0]="Íàèìåíîâàíèå";
    SG4->Cells[2][0]="Ãîäåí äî";
  }
  fclose(fb);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2012, 14:14
Ответы с готовыми решениями:

Что может значить такая ошибка. Ambiguity between 'Output' and 'System::Output'
Если кто может, помогите разобраться с этой ошибкой. Unit1.cpp(85): E2015 Ambiguity between 'Output' and 'System::Output' ...

Ошибка Ambiguity between
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { int Transparency; long ExtStyle; Transparency =...

Что за ошибка: "E2015 Ambiguity between 'time' and 'std::time"?
Коды ошибок: v8.cpp(132): E2015 Ambiguity between 'time' and 'std::time(long *)' v8.cpp(133): E2015 Ambiguity between 'time' and...

13
145 / 67 / 14
Регистрация: 30.12.2011
Сообщений: 137
22.04.2012, 15:13
Неоднозначность перегруженных функций... то есть, компилятор не знает какую функцию использовать:

C++
1
_fastcall TDateTime::operator double() const
или

C++
1
_fastcall TDateTime::operator int() const
в твоем случае ругнулся
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
22.04.2012, 15:33
- и вообще-то
C++
1
IncAMonth(var Year, Month, Day: Word; NumberOfMonths: Integer = 1);
имеет как минимум три параметра (если это не устарело).
Может лучше
C++
1
function IncMonth(const DateTime: TDateTime; NumberOfMonths: Integer = 1): TDateTime;
0
 Аватар для System16v
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
02.05.2015, 12:21
Подскажите пожалуйста.Брал пример с книги Дейтела,вылетела эта же ошибка.Где я мог напортачить?

C++
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
27
28
29
30
31
32
33
34
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Time.h"
 
using namespace std;
 
int main()
{
 Time t; // создать объект t класса Time
 // вывести исходные значения объекта t класса Time
 cout << "The initial universal time is ";
 t.printUniversal(); // 00:00:00
 cout << "\nThe initial standart time is ";
 t.printStandart();
 t.setTime(13,27,6); // изменить время
 
 // вывести новые значения объекта t
 cout << "\n\nUniversal time after setTime is ";
 t.printUniversal(); // 13:27:06
 cout << "\nStandart time after setTime is ";
 t.printStandart(); // 1:27:06 PM
 
 t.setTime(99,99,99); // попытка некорректной установки
 cout << "\n\nAfter attempting invalid settings:" << "\nUniversal time: ";
 t.printUniversal(); // 00:00:00
 cout << "\nStandart time: ";
 t.printStandart(); // 12:00:00 PM
 cout << endl;
 system("pause");
 return 0;
}
C++
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
27
28
29
30
31
32
33
34
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Time.h"
 
using namespace std;
 
Time::Time()
{
 hour=minute=second=0;
}
// установить значение времени(во всемирном формате); убедиться, что данные сог-
// ласованы: недействительные элементы обнуляются
void Time::setTime(int h, int m, int s)
{
 hour=(h>=0&&h<24)? h : 0; // проверить часы
 minute=(m>=0&&m<60) ? m : 0; // проверить минуты
 second=(s>=0&&s<60) ? s : 0; // проверить секунды
}
// напечатать в формате всемирного времени (HH:MM:SS)
void Time::printUniversal()
{
 cout << setfill('0') << setw(2) << hour << ":" << setw(2) << minute << ":"
      << setw(2) << second;
}
// напечатать в стандартном формате времени (HH:MM:SS AM или PM)
void Time::printStandart()
{
 cout << ((hour==0||hour==12) ? 12 : hour % 12) << ":" << setfill('0')
      << setw(2) << minute << ":" << setw(2) << second << (hour < 12 ? "AM"
      : "PM" );
}
C++
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
//------------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
 
// предотвратить многократное включение заголовочного файла
// препроцессорная обёртка
#ifndef TimeH          // имя загловочного файла пишется слитно без точки
#define TimeH
 
class Time
{
 public:
    Time();           // конструктор
    void setTime(int,int,int); // установить час, минуту, секунду
    void printUniversal(); // напечатать в формате всемирного времени
    void printStandart(); // напечатать в стандартном формате времени
 private:
    int hour; // 0-23 (24-часовой формат времени)
    int minute; // 0-59
    int second; // 0-59
};
#endif
Пишет ошибку дважды в 1ом коде - [C++ Error] Unit1.cpp(12): E2015 Ambiguity between 'Time' and '_fastcall Sysutils::Time()'
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
02.05.2015, 12:29
Названия совпадают. Ты хотя бы свой класс по-другому обозвал, например, MyTime или еще как-нибудь.
Time() уже существует. Как твой билдер поймет, что ему использовать?
1
 Аватар для System16v
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
02.05.2015, 12:31
gunslinger, где совпадают?Можешь указать где конкретно?Делал как в книге,т.е. просто перекатал код.
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
02.05.2015, 12:37
Прежде чем примеры скатывать, нужно хоть немного в теории разобраться.
Ошибка говорит о том, что не получается выбрать, что использовать.
Как в случае с одним ослом - по бокам 2 одинаковых стога сена, невозможно решить, какой лучше (больше подходит).
Тебе указывается номер строки с ошибкой. Какая еще информация нужна? Все очевидно. Если нет, то обратись к преподавателю.
1
 Аватар для System16v
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
02.05.2015, 13:28
Исправил,запустилось.Спасибо,так получается название класса совпадало с чем именно?С тем что я создал класс Time и еще конструктор указал Time()? Не пойму почему в книге так написано.Опечатка что ли. Я сам обучаюсь,не к кому обратиться ,поэтому и спрашиваю здесь. Да в теории немного разбираюсь,просто с поиском ошибок иногда туго получается. Т.е. так то я почитал и понял что ругается и не может выбрать,а вот где конкретно ошибка,не мог найти.

Добавлено через 18 минут
gunslinger, а еще можешь подсказать на счет конструктора? Не могу понять,по книге объявляется конструктор
C++
1
2
3
4
class Time
{
 public:
    Time();
Он потом нигде не вызывается,и я так понимаю имеется ввиду по книге что он сам автоматически всегда запускается что ли?Просто в книге указано потом результат выполнения программы,и там все как полагается. А у меня получается так,что при 1ом выводе выводит неверное время, в книге 1ый вывод - 00:00:00 и 12:00:00 АМ , где якобы получается вызывался конструктор Time и он обнулял значения.А у меня выводит - 01:256:01 и 1:256:01 , и получается значения не обнулены (ну и Time не вызывалась я так понял). Но я если в Main,в начале конкретно сделаю вызов,
C++
1
2
3
4
int main()
{
 MyTime t; 
 t.Time();
то все запускается корректно как в результате книги,но получается же я явно вызываю обнуление.А по книге типа автоматически.Как сделать чтоб так же как в книге было?Или просто в билдере явно надо делать вызов?

Добавлено через 7 минут
Т.е. даже получается раз я явно вызываю ее,то это даже никакой не конструктор,а просто функция?В книге только написано что конструктор...блин я запутался

Добавлено через 23 минуты
Вобщем я вернулся к тому с чего начал.Запутался и не пойму,почему ошибка вылетает какая и была.Правило при создании конструктора то выполняется - у конструктора имя должно быть точно такое как и класс , так почему он ругается?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
02.05.2015, 13:40
Я может быть и не в тему напишу, но всё же... вдруг пригодится.
По моей логике, начиная собирать проект компилятор просматривает текст всего наварганенного а также всех инклюдов, которые для проекта прописаны. А в них куча всяких переменных определена, с которыми ему предстоит разбираться хотя бы на предмет коллизий... . Я это к тому, что в собственных названиях использовать общеупотребительные, шаблонные имена нежелательно (например: называя компонент именем его класса, а уж слово Time столько раз употребляется...!) - ему (компилятору, линковщику) и так не просто...
1
 Аватар для System16v
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
02.05.2015, 13:56
nick42, Капец,поменял название Time на Time1 и все запустилось как в книге с правильным результатом и конструктором Time1. Получается имя Time есть в шаблонах,и он на это и ругался,т.к. не понимал использовать ли мой класс и конструктор с именем Time или шаблонную?

Добавлено через 7 минут
Нда....оно и в 1ый раз когда я название сменил работало бы правильно,если бы до конца изменил названия,а я получается название класса изменил то,а название конструктора нет,и получился не конструктор,а функция.Поэтому все криво выдавало,не обнуляя результат. Просто очень почему то туго до меня доходит в чем ошибка...и на что конкретно ругается и где конкретно надо изменить.Ну теперь запомню,думаю если в следующий раз опять такая же хрень будет,сразу найду и исправлю
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.05.2015, 16:27
Цитата Сообщение от NooBik Посмотреть сообщение
Ambiguity between '
Неоднозначность.

В VCL уже есть ф-ция Time() возвращающая текущее время в TTime.

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace My
{
//--------------
class Time
{
 public:
    Time();           // конструктор
    void setTime(int,int,int); // установить час, минуту, секунду
    void printUniversal(); // напечатать в формате всемирного времени
    void printStandart(); // напечатать в стандартном формате времени
 private:
    int hour; // 0-23 (24-часовой формат времени)
    int minute; // 0-59
    int second; // 0-59
}
//--------------
}
//--------------
My::Time t(1,1,2015);
Ну или создавай консольный проект без поддержки VCL.
1
 Аватар для System16v
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
02.05.2015, 18:52
Avazart, без VCL не скомпилируется. Ну я в принципе так и понял,что где-то в библиотеке есть шаблонная функция Time,просто 1ый раз когда менял название,я не правильно понял,мне показалось что ругается именно на конструктор,что у него такое же имя как и у класса.Поэтому и был в недоумении,что за ерунда,ведь при создании конструктора,у него имя должно совпадать с именем класса.А потом уже дошло,что он ругается вовсе не на конструктор,а на название самого класса Time. Но,все равно спасибо , буду знать где теперь конкретно функция time .
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.05.2015, 18:59
Цитата Сообщение от System16v Посмотреть сообщение
Ну я в принципе так и понял,что где-то в библиотеке есть шаблонная функция Time
Самая обычная ф-ция.

И вообще я привел пример как делать что бы не было конфликтов - оформлять в свой неймспейс.
0
03.05.2015, 01:18
 Комментарий модератора 
Avazart, не раз уже было говорено, что хамить не обязательно. Пора бы и прислушаться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.05.2015, 01:18
Помогаю со студенческими работами здесь

Что за ошибка: "E2015 Ambiguity between 'time' and 'std::time"?
Коды ошибок: v8.cpp(132): E2015 Ambiguity between 'time' and 'std::time(long *)' v8.cpp(133): E2015 Ambiguity between 'time' and...

Ошибка Ambiguity between
Как исправить? Выдает данную ошибку: Unit2.cpp(64): E2015 Ambiguity between 'std::abs(int)' and 'std::abs(long)' #include...

Самописный класс (.cpp +.h) ошибка ambiguity between...
Я вобще почти ничего не знаю в c++, самый что нинаесть новичок, пытаюсь разобраться с классически принятой(сообществом) структурой...

Билдер 2010 -ошибка E2015 Ambiguity between
в файле проекта в строке USEFORM(&quot;UnitPrintPageSetup.cpp&quot;, PageSetupDialog); AFF_ORDO.cpp(13): E2015 Ambiguity between...

Тип строки, передаваемой в ParseJSONValue(). Ошибка "E2015 Ambiguity between"
В 1 форме нормально работает, подключаю в любой другой форме &quot;&lt;DBXJSON.hpp&gt;&quot; пишу TJSONObject *jObj =...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru