0

ソフトウェアの .NET 環境への移行がほぼ完了しました。現在、すべての警告を確認し、それらをクリーンアップしています。次に、この問題に遭遇しました。

これが私のクラスです:

 TColorObj = class
   value:double;
   thecolor:Color;
   Constructor;
   method ReadColor(bdr:BinaryReader);
   method WriteColor(bdw:BinaryWriter);
   method Clone:TColorObj;
   method ToString:String; Override;  <<<<----this method is raising error.
 end;

エラーは「基本メソッドより低いアクセスでメソッドをオーバーライドできません」です。ただし、 Overrideというキーワードを削除すると、「ToString」によって親メソッドが隠されます」という警告メッセージが表示されます。ご覧のとおり、TColorObj クラスはどの基本クラスからも継承されていません。

では、クラス TColorObj を public にしますか?

ヘルプやヒントをいただければ幸いです。

4

2 に答える 2

4

ToStringメソッドを可視性で公開する必要があります。これは、 にあるものTObjectです。'public' から下位の可視性に移動することはできません。

TColorObj = class
   value:double;
   thecolor:Color;
   Constructor;
   method ReadColor(bdr:BinaryReader);
   method WriteColor(bdw:BinaryWriter);
public
   method Clone:TColorObj;
   method ToString:String; Override;  <<<<----this method is raising error.
end;
于 2012-08-09T13:12:01.100 に答える
1

クラスから継承するクラスを指定しない場合、すべてのクラスは別のクラスから継承されますObject

公開されているToStringメソッドをオーバーライドしているため、オーバーライドするメソッドも公開する必要があります。

于 2012-08-09T13:18:07.193 に答える