0

わかりました。簡単な質問がありますが、オンラインで探しているものの例は文字通りなく、1つのファイルですべてを実行する同じ例のコピーのみです。以下の例のようにインターフェイスとそれを使用するメソッドを作成しようとしていますが、コンパイル時にVisualStudioから未解決の外部シンボルエラーが発生します。私が間違っていることについて何か考えはありますか?

IFoo.h

class IFoo {
public:
    virutal int Bar();
}

Foo.h

class Foo : public IFoo {
    virtual int Bar();
}

Foo.cpp

int Foo::Bar() {
    return 1;
}
4

2 に答える 2

1

未解決のシンボルがのためのものであると仮定すると、int IFoo::Bar()この関数は呼び出し可能な関数として宣言されており、実際に呼び出すことができることに注意してください。

p->IFoo::Bar()

つまり、この関数を定義するか、存在しないものとして宣言する必要があります。

virtual int Bar() = 0;

(ただし、それでも定義できます)。

于 2012-10-05T23:00:06.357 に答える
0

IFoo.hでは、仮想メソッドは純粋仮想である必要があります。

class IFoo {
public:
    virtual int Bar() = 0;
};

または、インラインまたはIFoo.cppでデフォルトの実装を提供します。ただし、インターフェイスのように機能しないため、Iプレフィックスは誤解を招く可能性があります。

于 2012-10-05T22:58:56.500 に答える