2016-04-03 23 views
-1

2つのクラスと実際のあいまいさ。だから、2つの仮想抽象メソッドで50%の確率でC++未解決の外部シンボル

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

問題、エラーリスト:

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]) 

何の手段次回関連するコードを持っているICommandLine由来

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

とクラス世界:
クラスICommandLineは、次の関連するコードを持っていますCL_RecieveCommandは上書きされますが、CL_AssignCommandExecMapsは未解決です。 この問題は、抽象的なキーワードの代わりに{}を付けることで簡単に解決できますが、私はこのクラスを抽象的にする必要があります。
両方のメソッドの定義が存在するにもかかわらず、このエラーが発生するのはなぜですか?

+1

'abstract'がC++キーワードではありません。 Microsoftの拡張機能である場合とそうでない場合があります。この 'virtual void CL_AssignCommandExecMaps()= 0;'のような純粋な仮想メソッドを定義したいかもしれません。 –

答えて

0

それはおそらく陳腐対象だが、とにかく...
私はちょうどICommandLineのコンストラクタに見えた:

ICommandLine() 
{ 
    registered.push_back(this); 
    CL_AssignCommandExecMaps(); // <- This is call of undefined method 
} 
関連する問題