错误LNK2020:Visual C++中未解析的标记(06000002)

Lee*_*ite 4 c++ compiler-errors c++-cli visual-c++

我在C++/CLI中创建一个新的抽象类,并遇到了一个奇怪的错误.有很多类似的问题,但没有一个答案可以帮助我.

在这个新类中,我收到以下错误:

error LNK2020: unresolved token (06000002) Foo::execute
Run Code Online (Sandbox Code Playgroud)

这是h文件:

#pragma once
using namespace System::IO::Ports;
using namespace System;

public ref class Foo
{
protected:
    SerialPort^ port;
public:
    Foo(SerialPort^ sp);
    virtual array<Byte>^ execute();
};
Run Code Online (Sandbox Code Playgroud)

这是cpp文件:

#include "StdAfx.h"
#include "Foo.h"

Foo::Foo(SerialPort^ sp)
{
    this->port = sp;
}
Run Code Online (Sandbox Code Playgroud)

请注意,当我注释掉该virtual array<Byte>^ execute();行时,所有内容都会完美编译.此外,当我删除virtual修饰符并execute()在cpp文件中添加实现时,它也可以.

Peo*_*are 6

你自己已经给出了答案:

此外,当我删除虚拟修饰符并在cpp文件中添加execute()的实现时,它也可以工作.

execute在标头中声明了该方法,但缺少实现方法.这正是链接器错误告诉你的.在这种情况下,声明virtual无关紧要.

如果你想创建一个抽象类,你可以在网上找到许多文章的更多细节(例如Wikibooks:Abstract Classes)