-1

ここに私が持っているものがあります:

class Abstract
{
public:
  virtual bool isThis(Abstract*);
};

class FileType:public Abstract
{
public:
  bool isThis(FileType* ptr)
  {
    return false;
  }
};

そして、これがVisual Studioの発言です:

ここに画像の説明を入力

どうもありがとう

4

2 に答える 2

4

まず、 で関数のコードを提供しない場合は、Abstract仮想純粋にする必要があります (= 0末尾に追加)。次に、派生クラスの関数のシグネチャは同じでなければなりません (つまり、 のAbstract*代わりにパラメーターを受け入れますFileType*)。

事前にいくつかの C++ マニュアルを読むことを強くお勧めします。それはあなたに多くの手間を省きます。

于 2012-12-17T21:05:16.847 に答える
1

エラー メッセージには、の実装が見つからなかったことが示されていますAbstract::isThis(Abstract*)。あなたが提供するコードスニペットにはこの関数の定義がないため、これは正しいように見えます。

これが純粋な仮想関数であるという考えがある場合は= 0、宣言の最後に追加します(の前に。しかし、その関数をオーバーライドしない;ため、さらにエラーが発生します:同じ引数を持っていませんリスト。FileTypeFileType::isThis(FileType*)

于 2012-12-17T21:05:25.543 に答える