Можно ли добавить конструктор во включенный класс? - PullRequest
0 голосов
/ 25 сентября 2019

Я использую библиотеку, которая имеет несколько полезных типов, но им не хватает некоторых функций.Поэтому я думаю, есть ли хороший способ расширить эти типы.

Я взял некоторые другие типы из библиотеки, унаследовал их и просто использовал свои собственные расширенные версии.Я не могу придумать, как это сделать для следующей проблемы.

Существует плавающая точка и целочисленная структура 2D-точек, то есть Point2D и Point2DInt.Я хотел бы иметь возможность либо неявно преобразовывать между ними, либо иметь возможность конструировать одно из другого, в любом случае я хочу добавить конструктор к этому внешнему классу.

Существует конструктор типа float для intв интегральном классе, но никто не идет другим путем.

Я понимаю, что мог бы просто сделать служебную функцию для этого, но хотел бы знать, возможно ли это вообще.

1 Ответ

1 голос
/ 25 сентября 2019

Единственный способ сделать класс неявно конвертируемым в другой - это модифицировать один из классов (либо добавить конструктор преобразования в один, либо оператор преобразования в другой).Модификация должна быть в определении класса;не после определения.

Действительно, вы можете написать функцию, которая принимает один в качестве аргумента и возвращает другой, но неявное преобразование невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...