我收到以下错误
1>------ Build started: Project: test123, Configuration: Debug Win32 ------
1> test.cpp
1>e:\avinash\test123\test.cpp(25): error C2668: 'XYZ::createKey' : ambiguous call to overloaded function
1> e:\avinash\test123\test.cpp(13): could be 'void *XYZ::createKey(const int64_t)'
1> e:\avinash\test123\test.cpp(7): or 'void *XYZ::createKey(const time_t &)'
1> while trying to match the argument list '(long)'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
以下是源代码,我该如何解决这个问题
#include <WinSock2.h>
typedef signed __int64 int64;
typedef int64 int64_t;
namespace XYZ
{
inline void* createKey( const time_t& value ) {
return NULL;
}
inline void* createValue( const time_t& value ) {
return NULL;
}
inline void* createKey(const int64_t value) {
return NULL;
}
inline void* createValue(const int64_t value) {
return NULL;
}
}
int main( int argc, char** argv)
{
XYZ::createKey(10L);
return 0;
}
答案 0 :(得分:1)
time_t
__int64
。在其他平台上可能是long
或int
。 无法为time_t
定义单独的重载以及别名的原始整数类型,因为不是单独的类型。
上述重载毫无意义。编译器不会根据参数是声明time_t
还是__int64
来更改它们,而是根据参数是否为const引用(如果我正确读取规范,则引用更差)除了与非引用完全相同的引用类型之外的任何内容,但到目前为止我还不确定。