C ++ Невозможно реализовать абстрактный класс в Visual Studio - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь реализовать состояние Pattern в C ++, но, очевидно, мой базовый класс - not a class or struct name. Я получаю эту ошибку в Visual Studio 2019. Мой базовый класс выглядит следующим образом:

#pragma once

class LightingState
{
public:
    LightingState() {};
    virtual void shine() = 0;
};

Класс, который должен реализовывать функцию shine(), выглядит следующим образом:

#pragma once

class White : public LightingState
{
public:
    void shine();
private:

};

Для моего базовый класс LightingState, у меня нет .cpp файла, потому что я хочу, чтобы этот класс был чисто абстрактным классом.

Когда я пытаюсь применить предложенное исправление (реализовать чисто виртуальное для Base 'LightingState' ) Я получаю окно с предупреждением:

Error Message

На рисунке вы также можете видеть, что мои занятия находятся в одном проекте.

1 Ответ

0 голосов
/ 12 февраля 2020

Когда компилятор анализирует определение класса White, он не знает, что такое тип LightingState, потому что он еще не определен. Вам нужно добавить оператор #include "LightingState.h" в White.h.

#pragma once

#include "LightingState.h" // <-- ADD THIS!

class White : public LightingState
{
public:
    void shine();
private:

};```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...