Добрый вечер, господа. Возник вопрос, а Страуструпа читать времени нет.
Могу я описать operator преобразования к базовому типу? К типу который проектировал не я?
Какой будет синтаксис?
Спасибо за помощь.
Завтра сегодня будет вчера.
Re: Как сделать такую штуку double a = (doule)(CTime(777));
Здравствуйте, m_dotNET, Вы писали:
_NE>Добрый вечер, господа. Возник вопрос, а Страуструпа читать времени нет. _NE>Могу я описать operator преобразования к базовому типу? К типу который проектировал не я? _NE>Какой будет синтаксис?
class A
{
int m_i;
public:
A() : m_i(5) {};
operator double();
};
A::operator double()
{
std::cout << "operator double" << std::endl;
return double(m_i);
}
void main()
{
A a;
double d = a;
}
Похоже, что все операторы преобразования типов обязаны быть нестатическими членами.
У меня по крайней мере такой код не скомпилировался. Или можно обойти это ограничение? А то я не могу в реализацию класса влазить.
#include <atltime.h>
operator double( const CTime& t ) // error C2801: 'operator user-defined conversion' must be a non-static member
{
return ( double )t.GetTime();
}
operator CTime( const double t ) // error C2801: 'operator user-defined conversion' must be a non-static member
{
return CTime( ( __time64_t )t );
}
Завтра сегодня будет вчера.
Re: Как сделать такую штуку double a = (doule)(CTime(777));
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Здравствуйте, m_dotNET, Вы писали:
m>> Могу я описать operator преобразования к базовому типу? m>> К типу который проектировал не я?
ПК>Нет. Напиши "нормальную" именованную функцию — и все дела