C++ 编译错误:重载的"<function_name>(char*&)"调用不明确



我试图将C语言的代码转换为C++语言,但我遇到了一个错误,但我不知道问题的根源是什么。

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

错误消息为:

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

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

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

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

在头中,您在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) {
^^^^^^^^^^^^^^
}

最新更新