Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 9
1

Delphi 10 Программа с использованием перегруженных методов и параметров

24.10.2016, 20:49. Показов 1424. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят, помогите пожалуйста. Выдает ошибки.
Вот программа для вычисления объема конуса (по радиусу основания и высоты) или правильной треугольной пирамиды (по стороне основания и высоты).
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
unit os3lab;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  TForm5 = class(TForm)
    Button1: TButton;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    function CalcVolume(const Rx: Real = 10; const Hx: Real = 15): Real; overload; //Для конуса
    function CalcVolume(const Sx: Real = 5; const Hx: Real = 10; const Some: String = ''): Real; overload; //Для пирамиды
    { Public declarations }
  end;
 
var
  Form5: TForm5;
 
implementation
 
{$R *.dfm}
 
 
{ TForm4 }
 
function TForm5.CalcVolume(const Rx, Hx: Real): Real;
begin
  //Для конуса.
  Result:=0;
  //Считаем объем...
end;
 
function TForm5.CalcVolume(const Sx, Hx: Real; const Some: String): Real;
begin
  //Для пирамиды.
  Result:=0;
  //Считаем объем...
end;
 
procedure TForm5.Button1Click(Sender: TObject);
var
  AConusVolume: Real;
  APyramidVolume: Real;
begin
  //Передаем параметры для расчета конуса:
  AConusVolume:=CalcVolume(10); //И Высота у нас по умолчанию.
  APyramidVolume:=CalcVolume(5, 5, 'Test'); //А тут параметры заданы.
end;
end.
А вот это мне выдает Делфи, что сделать, чтобы исправить?
Delphi
1
2
3
4
5
6
[dcc32 Error] os3lab.pas(53): E2251 Ambiguous overloaded call to 'CalcVolume'
  os3lab.pas(18): Related method: function TForm5.CalcVolume(const Real; const Real): Real;
  os3lab.pas(19): Related method: function TForm5.CalcVolume(const Real; const Real; const string): Real;
[dcc32 Fatal Error] Project3.dpr(5): F2063 Could not compile used unit 'os3lab.pas'
Failed
Elapsed time: 00:00:02.3
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2016, 20:49
Ответы с готовыми решениями:

[Delphi 10] Написать программу с использованием перегруженных методов и параметров по умолчанию
Ребят, помогите пожалуйста. Я в делфи полный ноль. Мне нужно написать программу с использованием...

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

Работа перегруженных методов
Здравствуйте. Ребят, помогите пожалуйста разобраться с задачкой. Изначально у меня было такое...

Как программно получить список методов класса, параметров этих методов и типов этих параметров?
можно для паблишед методов и свойств кстати. Суть в том, что делфи при вводе точки после имени...

4
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
24.10.2016, 22:07 2
ambiguous в переводе с нерусского - двусмысленный
вот и как должен компилятор понять, какую версию вы вызываете. ту у которой всего два параметра или ту, у которой третий - по умолчанию
0
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 9
24.10.2016, 22:32  [ТС] 3
Если честно, я вообще никогда до этого не сталкивался с Delphi и просто 0 в нем.
Можете сказать как сделать по-другому?
0
Asm/C++/Delphi/Py/PHP/VBA
6528 / 1973 / 228
Регистрация: 14.12.2014
Сообщений: 4,125
Записей в блоге: 12
24.10.2016, 23:40 4
Лучший ответ Сообщение было отмечено Varfolomei6996 как решение

Решение

Проблема в том, что если вызываешь CalcVolume без аргументов или с 1-2 аргументами, компилятор не понимает какую из функций нужно использовать, т.к. обе подходят. Надо писать вот так:
Delphi
1
2
    function CalcVolume(const Rx: Real = 10; const Hx: Real = 15): Real; overload; //Для конуса
    function CalcVolume(const Sx: Real; const Hx: Real; const Some: String): Real; overload; //Для пирамиды
или
Delphi
1
2
    function CalcVolume(const Rx: Real; const Hx: Real): Real; overload; //Для конуса
    function CalcVolume(const Sx: Real; const Hx: Real; const Some: String): Real; overload; //Для пирамиды
или
Delphi
1
2
    function CalcConeVolume(const Rx: Real = 10; const Hx: Real = 15): Real; //Для конуса
    function CalcPyramidVolume(const Sx: Real = 5; const Hx: Real = 10; const Some: String = ''): Real; //Для пирамиды
1
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 9
25.10.2016, 00:09  [ТС] 5
Спасибо, помогло.)
0
25.10.2016, 00:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2016, 00:09
Помогаю со студенческими работами здесь

Особенности бинда перегруженных шаблонных методов класса
Привет! Есть бустовый сокет, хочу некоторые его методы запихать в std::function. Методы шаблонные,...

Построить таблицу функции и продемонстровать работу перегруженных методов
Здравствуйте, помогите пожалуйста в решении задачи: построить таблицу функции y=f(x) для x...

Явно указать какой из перегруженных методов надо вызвать
Смотрите, есть 2 перегруженных метода (exe), делают одно и тоже, возвращают немного разные...

программа с использованием методов сортировки
Отсортировать строки массива целых чисел по убыванию. Шейкерная сортировка.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru