がInterface
クラスを考えてみましょう:のVisual Studio 2010 - C++致命的なエラーLNK1120:1つの未解決の外部
someMethod
は純粋仮想であると
someMethod2
が仮想 次に、2つの派生クラス
Derived
class Derived : public Interface
{
public:
Derived(){ cout << "derived constructor";}
~Derived(){ cout << "derived destructor";}
virtual void someMethod() override { cout << "derived someMethod";}
virtual void someMethod2() { cout << "derived someMethod2";}
};
ある
class Interface
{
public:
virtual ~Interface(){}
virtual void someMethod() = 0;
virtual void someMethod2(){}
};
とDerivedB
:
class DerivedB : public Interface
{
public:
DerivedB(){ cout << "derivedB constructor";}
~DerivedB(){ cout << "derivedB destructor";}
virtual void someMethod() override { cout << "derivedB someMethod";}
};
純粋仮想メソッドだけを実装しています。 main
で、私は次のことをやっている:
vector<Interface *> myVector(4);
for(int i = 0; i < 4; i++){
if(i%2 == 0){
myVector[i] = new Derived();
}else{
myVector[i] = new DerivedB();
}
}
私は、私は次のエラーを取得する構築しようとした際:
error LNK2019: unresolved external symbol "public: __thiscall DerivedB::DerivedB(void)" ([email protected]@[email protected]) referenced in function _main
debug\Test.exe : fatal error LNK1120: 1 unresolved externals
間違っていますか?
、どこ 'DerivedB :: DerivedB'の実装?それを実装してエラーが消えてしまいます。 – RbMm
私はすでに.cppに 'DerivedB'コンストラクタを実装しています。元の投稿を更新しました。 – paperox