Member 14576374 Ответов: 1

C2593 'оператор < & lt;' неоднозначен


template <class Key, class Value>
ATOSTD ostream&
AtoScriptAsyncNotifierAgent<Key, Value>::insertKey(
    ATOSTD ostream& oStream,
    const void* aKey) const
    //{ return oStream << * (const Key*) aKey; }
{
    return oStream  << * (const Key*) aKey;
}


Что я уже пробовал:

C2593 'оператор < & lt;' неоднозначен

1 Ответов

Рейтинг:
8

Sandeep Mewara

Cause
Для типа __int64, определенного для класса ostream, не существует оператора <<.
Resolution
Определите свою собственную версию оператора <<. В следующем разделе примера кода показано простое решение для оператора <<, которое преобразует переменную __int64 в тип char * и передает ее оператору ostream <<.

Следующий пример программы демонстрирует проблему и обходной путь:
//Sample.cpp
// Compiler Options : /GX

//#define WORKAROUND   //Uncomment this line to workaround

#include<iostream>
using namespace std;

#ifdef WORKAROUND
std::ostream& operator<<(std::ostream& os, __int64 i )
{
    char buf[20];
    sprintf(buf,"%I64d", i );
    os << buf;
    return os;
}

#endif

int main(){
__int64  i64;

cout << i64 ;

return 0;
}

Ссылка: "ошибка C2593: "оператор <<" неоднозначна"[^]


CPallini

5.