C++ 无法在 Visual Studio 中实现抽象类

Posted

技术标签:

【中文标题】C++ 无法在 Visual Studio 中实现抽象类【英文标题】:C++ Cannot implement abstract class in Visual Studio 【发布时间】:2020-02-12 20:08:59 【问题描述】:

我尝试在 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' 实现纯虚拟)时,我收到一个警告窗口:

在图片中,你也可以看到我的类在同一个项目中。

【问题讨论】:

你没有包括你定义LightingState的标题 在使用名称LightingState(作为White 的基类)时,该名称不可见。代码需要一个#include 指令来提取定义类LightingState 的文本。 请在问题中以文本形式包含错误消息 void shine(); --> void shine() override; 【参考方案1】:

编译器在解析White类的定义时,不知道LightingState类型是什么,因为它还没有被定义。您需要在White.h 中添加#include "LightingState.h" 语句。

#pragma once

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

class White : public LightingState

public:
    void shine();
private:

;```

【讨论】:

以上是关于C++ 无法在 Visual Studio 中实现抽象类的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2010 中实现 Tesseract 以与项目一起运行

如何在 GUI 中实现我的 while 循环以使用 Visual Studio 在 C/C++ 中保持按键

为啥在 Visual Studio 中编译 C++ 项目时出现致命错误“LNK1104:无法打开文件 'cryptlib.lib'?

在 Visual Studio 6 中从 VB 调用 VS2010 C++ dll

尝试使用 Visual Studio 2010 调试 dll (C++) 时出现错误消息

VIsual Studio 2013 C++ 引用限定符问题