2016-04-03 19 views
-1

Visual Studio 2015, 2 sınıf ve gerçek muğlaklık. YaniC++ çözümlenmemiş harici sembol, 2 sanal soyut yöntemde% 50 şans ile

class World : public ICommandLine 
    { 
    public: 
     virtual void CL_RecieveCommand(string commandLine) override; 
     virtual void CL_AssignCommandExecMaps() override; 
    }; 

sorunu, hata listesi:

1>World.obj : error LNK2019: unresolved external symbol "public: virtual void __cdecl ICommandLine::CL_AssignCommandExecMaps(void)" ([email protected]@@UEAAXXZ) referenced in function "public: __cdecl ICommandLine::ICommandLine(void)" ([email protected]@[email protected]) 

değeri ne anlama gelir sonraki alakalı kodu vardır ICommandLine türetilen

class ICommandLine 
    { 
    public: 
     virtual void CL_AssignCommandExecMaps() abstract; 
     virtual void CL_RecieveCommand(string) abstract; 
    }; 

Ve sınıfını Dünya:
Sınıf ICommandLine sonraki alakalı kodu vardır CL_RecieveCommand, yalnızca iyi bir şekilde geçersiz kıldı, ancak CL_AssignCommandExecMaps hala çözümlenmemiş. Bu problem, soyut anahtar kelimeler yerine {} konularak kolayca çözülebilir, ancak soyut olmak için bu sınıfa gerçekten ihtiyacım var.
Her iki yöntem için tanımlamalar mevcut olsa bile bu hatayı neden alıyorum?

+1

'abstract' bir C++ anahtar kelime değildir. Microsoft uzantısı olabilir veya olmayabilir. Bu sanal sanal CL_AssignCommandExecMaps() = 0; gibi saf sanal yöntemleri tanımlamak isteyebilirsiniz. –

cevap

0

Belki basmakalıp konu, ama neyse ...
Sadece ICommandLine yapıcı içine baktı:

ICommandLine() 
{ 
    registered.push_back(this); 
    CL_AssignCommandExecMaps(); // <- This is call of undefined method 
} 
İlgili konular