ここに私が持っているものがあります:
class Abstract
{
public:
virtual bool isThis(Abstract*);
};
class FileType:public Abstract
{
public:
bool isThis(FileType* ptr)
{
return false;
}
};
そして、これがVisual Studioの発言です:
どうもありがとう
ここに私が持っているものがあります:
class Abstract
{
public:
virtual bool isThis(Abstract*);
};
class FileType:public Abstract
{
public:
bool isThis(FileType* ptr)
{
return false;
}
};
そして、これがVisual Studioの発言です:
どうもありがとう
まず、 で関数のコードを提供しない場合は、Abstract
仮想純粋にする必要があります (= 0
末尾に追加)。次に、派生クラスの関数のシグネチャは同じでなければなりません (つまり、 のAbstract*
代わりにパラメーターを受け入れますFileType*
)。
事前にいくつかの C++ マニュアルを読むことを強くお勧めします。それはあなたに多くの手間を省きます。
エラー メッセージには、の実装が見つからなかったことが示されていますAbstract::isThis(Abstract*)
。あなたが提供するコードスニペットにはこの関数の定義がないため、これは正しいように見えます。
これが純粋な仮想関数であるという考えがある場合は= 0
、宣言の最後に追加します(の前に。しかし、その関数をオーバーライドしない;
ため、さらにエラーが発生します:同じ引数を持っていませんリスト。FileType
FileType::isThis(FileType*)