C++ автоматические преобразования

Для двух несвязанных классов "класс A" и "класс B" и функция

B convert(const A&);

Есть ли способ сказать C++ автоматически для любой функции, которая берет "класс B" в качестве аргумента к автоматическому преобразованию "класс A".

Спасибо!

7
задан anon 7 February 2010 в 07:25
поделиться

2 ответа

В этом случае вы обычно даете B конструктор, который берет A:

class B
{
public:
    B(const A&);
};

И делает преобразование там. Компилятор скажет: "Как я могу сделать A a B? О, я вижу B можно построить из A".

Другой метод - использование оператора преобразования:

class A
{
public:
    operator B(void) const; 
}

И компилятор скажет: "Как сделать A a B? О, я вижу A можно преобразовать в B".

Имейте в виду, что ими очень легко злоупотреблять. Убедитесь, что эти два типа действительно имеют смысл неявно преобразовывать друг в друга.

10
ответ дан 6 December 2019 в 23:05
поделиться

Вы можете поставить литейщика или однопараметрический конструктор.

1
ответ дан 6 December 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: