Ошибка компиляции c ++: вызов перегруженного function & lt; имя_функции & gt; (char * & amp;) ‘является неоднозначным

Я пытаюсь преобразовать код в C на язык C ++, и я получаю сообщение об ошибке, но я понятия не имею,
в чем источник проблемы

Вот исходный код: http://pastebin.com/PnKvgNsR

Сообщение об ошибке:

call of overloaded ‘dateTimeToMinutes(char*&)’ is ambiguous

Компиляция с g ++ 4.7.1 (включая стандарт c ++ 11).

-5

Решение

В вашем файле cpp укажите пространство имен RabQavSystem в ваших определениях функций dateTimeXXX.

int RabQavSystem::dateTimeDifference(DateTime datetime1, DateTime datetime2)
{
...
}

int RabQavSystem::dateTimeToMinutes(DateTime datetime)
{
...
}
2

Другие решения

В своем заголовке вы объявляете две функции в RabQavSystem Пространство имен:

namespace RabQavSystem {
int dateTimeToMinutes(DateTime datetime);
int dateTimeDifference(DateTime datetime1, DateTime datetime2);
}

В вашем исходном файле вы объявляете и определяете новые функции в глобальном пространстве имен; это не определения функций, объявленных в заголовке, а разных функций в другом пространстве имен:

int dateTimeDifference(DateTime datetime1, DateTime datetime2) {
// ....
}

int dateTimeToMinutes(DateTime datetime) {
// ....
}

затем using namespace RabQavSystem; тянет имена других функций в глобальное пространство имен, вызывая неоднозначность.

Чтобы исправить это, вы хотите определить функции в вашем пространстве имен, а не в глобальном пространстве имен:

int RabQavSystem::dateTimeDifference(DateTime datetime1, DateTime datetime2) {
^^^^^^^^^^^^^^
}

int RabQavSystem::dateTimeToMinutes(DateTime datetime) {
^^^^^^^^^^^^^^
}
1

По вопросам рекламы [email protected]