【发布时间】:2014-08-18 00:15:19
【问题描述】:
我正在开发一个 C++ 项目,其中除其他外,我有一个带有一些纯虚拟方法的接口。当我尝试实现该接口时出现问题 - IntelliSense 似乎不同意派生类的方法声明。这种方法的一个例子:
// DLL_EXPORT -> #define DLL_EXPORT __declspec(dllexport)
// IPlayer
DLL_EXPORT virtual const Grid& GetGrid() const = 0;
在派生类之一中声明:
// Human : IPlayer
DLL_EXPORT const Grid& IPlayer::GetGrid() const;
它一直困扰着我的错误 - “IntelliSense:声明必须对应于指定基类中的纯虚拟成员函数”。代码编译没有错误并且运行良好,所有“有问题的”方法在运行时都按预期工作。值得一提的是,如果我删除派生类中的 IPlayer::scope 限定符,错误就会消失。出于可读性的原因,我想保留它。另外,我不精通 C++,所以我提供的示例可能存在明显错误。
【问题讨论】:
-
尝试正确限定纯虚拟GetGrid
-
恭喜,您是第 981519406510 个发现 IntelliSense 经常损坏的用户。 :)
-
@OMGtechy 如果没有问题,您能否进一步解释您的建议?
-
忽略我说的话,这是垃圾。不过, override 关键字可能会帮助您解决这个问题(它可能会给智能感知带来它需要的效果)
-
我不认为 Intellisense 坏了。我认为是MSVC。 g++ 和 clang 都不接受这个。
标签: c++ visual-studio intellisense