Руководство по конверсии - PullRequest
1 голос
/ 06 октября 2019

Каково стандартное решение, если у вас есть два класса A и B, и вам нужно определить преобразования из A -> B и B -> A?

  1. , чтобы A имел конструктор, принимающий Bа А имея оператор преобразования в Б?
  2. сделать, чтобы у A и B были конструкторы из другого?
  3. сделать так, чтобы и у А, и у были операторы преобразования в другой?
  4. Какой-то CPO convert<To>(From)
  5. любым другим способом ???

(примечания 2 и 3 требуют циклической зависимости)

1 Ответ

0 голосов
/ 08 октября 2019

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

(1) - это то, что вы делаете, когда расширяете APIто есть A знает о B, но B не знает об A;

(2) или (3) - это то, что вы делаете, когда A и B определены как часть одного и того же API, то есть они знают друг о друге;

(4) - это то, как вы объединяетедва несвязанных API, т.е. ни A, ни B не знают о другом.

...