Для двух несвязанных классов "класс A" и "класс B" и функция
B convert(const A&);
Есть ли способ сказать C++ автоматически для любой функции, которая берет "класс B" в качестве аргумента к автоматическому преобразованию "класс A".
Спасибо!
В этом случае вы обычно даете 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
".
Имейте в виду, что ими очень легко злоупотреблять. Убедитесь, что эти два типа действительно имеют смысл неявно преобразовывать друг в друга.
Вы можете поставить литейщика или однопараметрический конструктор.