表示: Delphi
C++
表示設定
E2037: '%s' の宣言がすでに定義されているものと異なります (Delphi)
提供:RAD Studio XE2
エラーと警告のメッセージ(Delphi):インデックス への移動
このエラーメッセージは,手続き,関数,メソッド,コンストラクタ,デストラクタのいずれかの宣言が前の(forward)宣言と異なっているときに表示されます。
このエラーメッセージは仮想メソッドをオーバーライドしようとしたときも表示されますが,オーバーライドではこれと異なるパラメータリスト,呼び出し規約が必要です。
program Produce;
type
MyClass = class
procedure Proc(Inx: Integer);
function Func: Integer;
procedure Load(const Name: string);
procedure Perform(Flag: Boolean);
constructor Create;
destructor Destroy(Msg: string); override; (*<-- ここでエラーメッセージ*)
class function NewInstance: MyClass; override; (*<-- ここでエラーメッセージ*)
end;
procedure MyClass.Proc(Index: Integer); (*<-- ここでエラーメッセージ*)
begin
end;
function MyClass.Func: Longint; (*<-- ここでエラーメッセージ*)
begin
end;
procedure MyClass.Load(Name: string); (*<-- ここでエラーメッセージ*)
begin
end;
procedure MyClass.Perform(Flag: Boolean); cdecl; (*<-- ここでエラーメッセージ*)
begin
end;
procedure MyClass.Create; (*<-- ここでエラーメッセージ*)
begin
end;
function MyClass.NewInstance: MyClass; (*<-- ここでエラーメッセージ*)
begin
end;
begin
end.
{ このように,このエラーメッセージが表示される原因はいくつもある }
program Solve;
type
MyClass = class
procedure Proc(Inx: Integer);
function Func: Integer;
procedure Load(const Name: string);
procedure Perform(Flag: Boolean);
constructor Create;
destructor Destroy; override; (*パラメータなし*)
class function NewInstance: TObject; override; (*戻り値の型 *)
end;
procedure MyClass.Proc(Inx: Integer); (*パラメータ名 *)
begin
end;
function MyClass.Func: Integer; (*戻り値の型 *)
begin
end;
procedure MyClass.Load(const Name: string); (*パラメータの種類 *)
begin
end;
procedure MyClass.Perform(Flag: Boolean); (*呼び出し規約*)
begin
end;
constructor MyClass.Create; (*constructor*)
begin
end;
class function MyClass.NewInstance: TObject; (*クラス関数*)
begin
end;
begin
end.
{ 「前の宣言」とエラーを起こした宣言を注意深く比較して 2 つの相違点を判別する必要がある }