Як зробити 3 конструктора з однаковою сигнатурою stack overflow російською

Потрібно написати програму, яка містить клас Triangle. В даному класі повинно бути три конструктора:

  1. Конструктор, який приймає три сторони.
  2. Конструктор, який приймає дві сторони і кут між ними і розраховує третю сторону по теоремі косинусів.
  3. Конструктор, який приймає два кута і сторону між ними і розраховує, що залишилися боку по теоремі синусів (пам'ятаючи про теорему про суму кутів трикутника).

Кожен Triangle також повинен повертати власну площу.

Тобто маємо наступне:

Вся проблема в тому, що у всіх трьох конструкторів однакова сигнатура, але різна логіка.
Питання: як вирішити цю проблему "правильно"?

  1. Заміна параметра (ів) double на string і подальший парсинг string в double.
  2. Заміна параметра (ів) double на float.

Винесення параметрів в масив:

  • Створення нового типу даних Angle.
  • заданий 27 Вересня '16 в 5:42

    Варіант 1 - використовуйте іменовані конструктори.

    Іменованих конструктором називається статичний метод, завдання якого - створити об'єкт із заданими параметрами. Іноді їх ще не цілком коректно називають фабричними методами.

    Варіант 2 - використовувати доменні типи даних

    Визначаємо типи даних "довжина" і "кут" - і використовуємо їх в конструкторах.

    Пара альтернативних варіантів до вже запропонованих.

    Оскільки вибір перевантаженої функції (і конструктора в тому числі) здійснюється на підставі типів, зрозуміло, що створити кілька різних конструкторів з однаковими сигнатурами не вийде.

    Проблему можна вирішити шляхом додавання додаткового параметра.

    Заводяться нові "порожні" класи (імена взяв з відповіді @Argon):

    Сигнатури конструкторів в цьому випадку будуть наступні:

    Використовується перерахування enum.

    В цьому випадку конструктор буде єдиний з розгалуженням логіки всередині:

    При цьому для аргументу kind можна задати значення за замовчуванням, якщо планується, що буде переважати той чи інший варіант побудови трикутника. наприклад:

    Схожі статті