c++;编译错误:调用重载‘&书信电报;功能名称>;(char*)和"x2019 ;;含糊不清 我试图把C代码转换成C++语言,但我错了,但我不知道。 问题的根源是什么

c++;编译错误:调用重载‘&书信电报;功能名称>;(char*)和"x2019 ;;含糊不清 我试图把C代码转换成C++语言,但我错了,但我不知道。 问题的根源是什么,c++,ambiguous,C++,Ambiguous,以下是源代码: 错误消息是: call of overloaded ‘dateTimeToMinutes(char*&)’ is ambiguous 使用g++4.7.1(包括c++11标准)编译。在cpp文件中,在dateTimeXXX函数的定义中指定名称空间RabQavSystem int RabQavSystem::dateTimeDifference(DateTime datetime1, DateTime datetime2) { ... } int RabQav

以下是源代码:

错误消息是:

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) {
    // ....
}
int RabQavSystem::dateTimeDifference(DateTime datetime1, DateTime datetime2) {
    ^^^^^^^^^^^^^^
}

int RabQavSystem::dateTimeToMinutes(DateTime datetime) {
    ^^^^^^^^^^^^^^
}
在源文件中,在全局命名空间中声明和定义新函数;这些不是标头中声明的函数的定义,而是不同命名空间中不同函数的定义:

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

int dateTimeToMinutes(DateTime datetime) {
    // ....
}
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) {
    // ....
}
int RabQavSystem::dateTimeDifference(DateTime datetime1, DateTime datetime2) {
    ^^^^^^^^^^^^^^
}

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

在这里发布相关部分,没有时间去其他地方…您的头文件中必须有另一个dateTimeToMinutes decl。我们也不知道问题的根源,发布一些代码可能有另一个
dateTimeToMinutes()
声明不在
RabQavSystem
命名空间中。因为您使用的是
名称空间RabQavSystem,这可能会导致问题。谢谢!我想我试着说得更具体些,但这对我来说真的很管用。。