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