C++ 未解析的外部符号,有 50% 的机会出现在 2 个虚拟抽象方法上

C++ unresolved external symbol with 50% chance on 2 virtual abstract methods

Visual Studio 2015, 2 classes 和真正的歧义。
Class ICommandLine 有下一个相关代码:

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

而 class 从 ICommandLine 派生的世界有下一个相关代码:

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)" (?CL_AssignCommandExecMaps@ICommandLine@@UEAAXXZ) referenced in function "public: __cdecl ICommandLine::ICommandLine(void)" (??0ICommandLine@@QEAA@XZ)

什么意思 CL_RecieveCommand 重写就好了,但是 CL_AssignCommandExecMaps 仍然没有解决。 这个问题可以通过使用 {} 而不是 abstract 关键字轻松解决,但我真的需要这个 class 是抽象的。
为什么我会收到此错误,即使这两种方法的定义都存在?

这可能是陈词滥调的话题,但无论如何...
我刚刚查看了 ICommandLine 构造函数:

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