Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;在2种虚拟抽象方法上有50%几率出现未解析外部符号_C++_Virtual_Abstract_Unresolved External - Fatal编程技术网

C++ C++;在2种虚拟抽象方法上有50%几率出现未解析外部符号

C++ C++;在2种虚拟抽象方法上有50%几率出现未解析外部符号,c++,virtual,abstract,unresolved-external,C++,Virtual,Abstract,Unresolved External,Visual Studio 2015,2个类和真正的模糊性。 类IComHandline具有下一个相关代码: class ICommandLine { public: virtual void CL_AssignCommandExecMaps() abstract; virtual void CL_RecieveCommand(string) abstract; }; 从IComHandline派生的类World具有下一个相关代码: class W

Visual Studio 2015,2个类和真正的模糊性。
类IComHandline具有下一个相关代码:

 class ICommandLine 
   {
   public:
      virtual void CL_AssignCommandExecMaps() abstract;
      virtual void CL_RecieveCommand(string) abstract;
   };
从IComHandline派生的类World具有下一个相关代码:

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_ReceiveCommand覆盖得很好,但CL_AssignCommandExecMaps仍未解决。 这个问题可以很容易地通过放置{}而不是abstract关键字来解决,但是我真的需要这个类是抽象的。

即使两种方法的定义都存在,为什么我会出现这个错误?

这可能是老生常谈的话题,但无论如何…
我刚刚查看了IComHandline构造函数:

ICommandLine() 
{
    registered.push_back(this);
    CL_AssignCommandExecMaps(); // <- This is call of undefined method
}
ICommandLine()
{
注册。推回(此);

CLSUBITIONDEXCEDCPMASH(;)//Cudio>抽象< <代码>不是C++关键字。它可能是也可能不是微软扩展。您可能需要定义纯虚拟方法,例如“代码>虚拟空隙CLSAdvutiDeCuxCeMeX())=0;< />代码>