ошибка LNK2020: неразрешенный токен (06000002) в переполнении визуального стека

Я создаю новый абстрактный класс в C ++ / CLI и столкнулся со странной ошибкой. Есть много вопросов, похожих на этот, но ни один из ответов не может мне помочь.

В этом новом классе я получаю следующую ошибку:

error LNK2020: unresolved token (06000002) Foo::execute

Это 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();
};

Это cpp-файл:

#include "StdAfx.h"#include "Foo.h"
Foo::Foo(SerialPort^ sp)
{
this->port = sp;
}

Обратите внимание, что когда я закомментирую virtual array<Byte>^ execute(); линия, все компилируется отлично. Кроме того, когда я удаляю virtual модификатор и добавить реализацию execute() в cpp-файле это тоже работает.

4

Решение

Вы уже дали ответ сами:

Кроме того, когда я удаляю виртуальный модификатор и добавляю реализацию execute () в cpp-файл, он также работает.

Вы объявили метод execute в шапке, но его реализация отсутствует. Это именно то, что говорит вам ошибка компоновщика.
В этом случае декларация как virtual не имеет значения.

Если вы хотите создать абстрактный класс, вы можете найти более подробную информацию в многочисленных статьях онлайн (например, Викиучебники: Абстрактные Занятия)

6

Другие решения

Вы должны либо реализовать метод, либо удалить объявление из заголовка. (виртуальное ключевое слово в данном случае не имеет значения)

Пожалуйста, задайте вопрос, если есть.

3

По вопросам рекламы [email protected]