Consider the Interface class:
class Interface
{
public:
    virtual ~Interface(){}
    virtual void someMethod() = 0;
    virtual void someMethod2(){}
};
Where someMethod is pure virtual and someMethod2 is virtual
Then two derived classes 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";}
};
and  DerivedB:
class DerivedB : public Interface
{
public:
    DerivedB(){ cout << "derivedB constructor";}
    ~DerivedB(){ cout << "derivedB destructor";}
    virtual void someMethod() override { cout << "derivedB someMethod";}
};
Which implements just the pure virtual method.
In the main I'm doing the following:
vector<Interface *> myVector(4);
for(int i = 0; i < 4; i++){
    if(i%2 == 0){
        myVector[i] = new Derived();
    }else{
        myVector[i] = new DerivedB();
    }
}
When I try to build I get the following error:
error LNK2019: unresolved external symbol "public: __thiscall DerivedB::DerivedB(void)" (??0DerivedB@@QAE@XZ) referenced in function _main
debug\Test.exe : fatal error LNK1120: 1 unresolved externals
What is wrong?
 
    