1

我收到以下错误

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;
}
4

1 回答 1

1

time_t __int64您的平台上。它可能是longint在其他平台上。无法为其别名的原始整数类型定义单独的重载time_t,因为它不是单独的类型

上面的重载是没有意义的。编译器不会根据参数是否已声明time_t__int64参数是否为 const 引用来更改它们(如果我正确阅读了规范,那么除了与非参考,但到目前为止我还不确定)。

于 2013-03-13T09:55:44.070 回答