У меня есть класс-оболочка, и я хочу изменить данные и преобразовать их обратно в исходный тип.
class A
{
public:
A ( unsigned __int64 _a ) : a (_a)
{
}
operator unsigned __int64 () const
{
return a;
}
unsigned __int64 a;
};
Я хочу, чтобы объект этого класса неявно преобразовал обратно в unsigned __int64
, но это не удалось.
Скажите,
A a( 0x100ull );
unsigned __int64 b = (a >> 16); // Error
Компилятор выдает ошибку C2678, оператор не найден или нет приемлемого преобразования.
Кажется, эта функция operator unsigned __int64 () const
не работает.
Чтобы быть более конкретным, компилятор говорит there is no acceptable conversion
. Я не могу принять жалобу, потому что я уже дал хорошую. Может ли кто-нибудь узаконить это?