-5

我正在尝试将 C 语言中的代码转换为 C++ 语言,但出现错误,但我不知道问题的根源是什么。

这是源代码: http: //pastebin.com/PnKvgNsR

错误信息是:

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

使用 g++4.7.1(包括 c++11 标准)编译。

4

2 回答 2

2

在您的 cpp 文件中,在 dateTimeXXX 函数的定义中指定命名空间 RabQavSystem。

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

int RabQavSystem::dateTimeToMinutes(DateTime datetime)
{
    ...
}
于 2012-09-25T13:17:15.397 回答
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) {
    ^^^^^^^^^^^^^^
}
于 2012-09-25T13:27:33.670 回答