Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Создать constructor с теми же параметрами


Автор: Delphist 8.1.2011, 22:57
Существует не безызвестный класс TObjectList, в нем есть:
Код

constructor Create(AOwnsObjects: Boolean); overload;


Я делаю класс наследника от TObjectList  
Код

TMyObjList = class(TObjectList)
...
end;

в своем TMyObjList я хочу создать 2 конструктора один из которых тоже должен иметь один булевский параметр.
Что-т не получается, делфятина ругается smile 
Вообще возможно ли такое замутить?

Автор: lukas 8.1.2011, 23:01
А что за текст ошибки?

В крайнем случае:

Код

constructor Create(AOwnsObjects: Boolean = false);

Автор: Delphist 8.1.2011, 23:05
Цитата(lukas @  9.1.2011,  00:01 Найти цитируемый пост)
А что за текст ошибки?

E2250 There is no overloaded version of 'Create' that can be called with these arguments

Автор: lukas 8.1.2011, 23:10
Какая версия делфи? У меня прекрасно работает, надо увидеть все объявление класса и где вызывается конструктор в коде. Скорее компилятор не может определить по типам - какой конструктор ему надо вызвать.

Автор: Delphist 8.1.2011, 23:24
Цитата(lukas @  9.1.2011,  00:10 Найти цитируемый пост)
Какая версия делфи? 

BDS 2006.
А мог бы привести код как у тя выгглядит

Автор: БелАмор 9.1.2011, 09:42
Код

type
  TMyObjList = class(TObjectList)
  public
    constructor Create; overload;                         // есть в предке
    constructor Create(AOwnsObjects: Boolean); overload;  // есть в предке
    constructor Create(AOwnsObjects: String); overload;   // нет в предке
  end;

implementation

{$R *.dfm}

constructor TMyObjList.Create;
begin
  inherited Create;
  //...
end;

constructor TMyObjList.Create(AOwnsObjects: Boolean);
begin
  inherited Create(AOwnsObjects);
  //...
end;

constructor TMyObjList.Create(AOwnsObjects: String);
var
  Owns: Boolean;
begin
  Owns :=
    (AOwnsObjects = 'True') or
    (AOwnsObjects = 'Да') or
    (AOwnsObjects = 'Конечно') or
    (AOwnsObjects = 'Обязательно');
  inherited Create(Owns);
  //...
end;

Автор: Delphist 9.1.2011, 10:50
Цитата(БелАмор @  9.1.2011,  10:42 Найти цитируемый пост)
  constructor Create(AOwnsObjects: String); overload;   // нет в предке

Вот этот конструктор у меня должен иметь параметр Boolean, а такой же
Код

constructor Create(AOwnsObjects: Boolean); overload;

уже есть в предке, вот в чем вся проблема

Автор: БелАмор 9.1.2011, 12:35
Цитата(Delphist @  9.1.2011,  10:50 Найти цитируемый пост)
уже есть в предке, вот в чем вся проблема 

Не наблюдаю вообще никакой проблемы в принципе:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  List: TMyObjList;
begin
  List := TMyObjList.Create(False);
  try
    List.Add(Sender);
    (List[0] as TButton).Caption := 'Всё работает';
  finally
    List.Free;
  end;
end;


Цитата(Delphist @  8.1.2011,  23:05 Найти цитируемый пост)
E2250 There is no overloaded version of 'Create' that can be called with these arguments

Это проблема вызова конструктора, а не самого конструктора. Возможно, вы пытаетесь передать что-то не то в качестве аргумента. Без кода гадать не имеет смысла.

Автор: Delphist 9.1.2011, 13:24
Цитата(БелАмор @  9.1.2011,  13:35 Найти цитируемый пост)
Не наблюдаю вообще никакой проблемы в принципе:

Ты не понял вопроса, вот здесь решили http://forum.sources.ru/index.php?showtopic=322879&st=0&#entry2797567

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)