Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TAnimal = class
public
constructor Create;
function GetKind: string;
function Voice: string; virtual; abstract;
private
Kind: string;
end;
TDog = class (TAnimal)
public
constructor Create;
function Voice: string; override;
function Eat: string; virtual;
end;
TCat = Class (TAnimal)
public
constructor Create;
function Voice: string; override;
function Eat: string; virtual;
end;
TForm1 = class(TForm)
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Button1: TButton;
Label1: TLabel;
procedure Form1OnCreate(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
MyAnimal: TAnimal;
public
end;
var
Animal: TAnimal;
Cat: TCat;
Dog: TDog;
Form1: TForm1;
implementation
procedure TForm1.Form1OnCreate(Sender: TObject);
begin
MyAnimal := TDog.Create;
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
MyAnimal.Free;
MyAnimal:=TAnimal.Create;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
MyAnimal.Free;
MyAnimal:=TAnimal.Create;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
MyAnimal.Free;
MyAnimal:=TAnimal.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := MyAnimal.Voice;
end;
end.
Подскажите, в чем ошибка при объявлении класса TAnimal?
Самое смешное, что объявление классов списано из методических указаний к выполнению лабы.
Код:
[Error] Unit1.pas(12): Unsatisfied forward or external declaration: 'TAnimal.Create'
[Error] Unit1.pas(13): Unsatisfied forward or external declaration: 'TAnimal.GetKind'
[Hint] Unit1.pas(16): Private symbol 'Kind' declared but never used
[Error] Unit1.pas(21): Unsatisfied forward or external declaration: 'TDog.Create'
[Error] Unit1.pas(22): Unsatisfied forward or external declaration: 'TDog.Voice'
[Error] Unit1.pas(23): Unsatisfied forward or external declaration: 'TDog.Eat'
[Error] Unit1.pas(28): Unsatisfied forward or external declaration: 'TCat.Create'
[Error] Unit1.pas(29): Unsatisfied forward or external declaration: 'TCat.Voice'
[Error] Unit1.pas(30): Unsatisfied forward or external declaration: 'TCat.Eat'