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代码>,这可能会导致问题。谢谢!我想我试着说得更具体些,但这对我来说真的很管用。。