Какова лучшая практика перегрузки преобразования типов? - PullRequest
3 голосов
/ 08 сентября 2011
class A
{
public:
    A ( unsigned _a ) : a (_a)
    {
    }
    operator unsigned& () 
    {
        return a;
    }
    operator const unsigned () const
    {
        return a;
    }
    unsigned a; 
}; 

В приведенном выше примере я создал два оператора преобразования типов, один из которых дает ссылку, другой - копию. У обоих есть недостатки. Любое предложение?


Поскольку оператор преобразования типов разрешен в C ++, как мы можем наилучшим образом использовать его и где?

1 Ответ

3 голосов
/ 08 сентября 2011

Как насчет создания второго const, когда вы все равно возвращаете копию. Это уберет неоднозначность:

class A
{
public:
    A ( unsigned _a ) : a (_a)
    {
    }
    operator unsigned& () 
    {
        return a;
    }
    operator unsigned () const // make this one const
    {
        return a;
    }
    unsigned a; 
}; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...