VCL クラスから新しいクラスを派生させていTStream
ます。
// A stream based on a temporary file, deleted when the stream is closed
class TTempFileStream : public TStream
{
...
public:
using TStream::Seek;
__int64 __fastcall Seek(const __int64 Offset, TSeekOrigin Origin)
{
return 0; // for simplicity!
}
...
} ;
TStream
Seek の次の 2 つのバリアントを宣言します。
virtual int __fastcall Seek(int Offset, System::Word Origin)/* overload */;
virtual __int64 __fastcall Seek(const __int64 Offset, TSeekOrigin Origin)/* overload */;
しかし、クラスをコンパイルすると、次の W8022 警告が表示されます:-
[BCC32 Warning]_utils.h(166): W8022
'_fastcall TTempFileStream::Seek(const __int64,TSeekOrigin)' hides virtual function '_fastcall TStream::Seek(int,unsigned short)'
確かに Using 宣言はそれを修正する必要がありますか?
この質問を軌道に戻すために、私は TStream::seek の 2 つのバージョンが相互に関連する方法を認識しており、派生クラスによって公開された継承された Seek(int,int) メソッドを取得しようとしています。なぜ私のusing
宣言はそれをしていないのですか?