如何在visual studio 2015中显示“未实现的纯虚拟”?

Posted

技术标签:

【中文标题】如何在visual studio 2015中显示“未实现的纯虚拟”?【英文标题】:How to show "unimplemented pure virtual" in visual studio 2015? 【发布时间】:2017-03-13 14:03:16 【问题描述】:

我想在 Visual Studio 2015 上显示这个警告/错误(在 clang 中):

/home/travis/build/x/x/src/guiComboBox.cpp:454:19: error: 

      allocating an object of abstract class type 'GUIListBox'

                m_listbox = new GUIListBox(Environment, this, -1, r, fal...

                                ^

/usr/include/y/IGUIListBox.h:88:16: note: unimplemented pure virtual

      method 'setItemOverrideColor' in 'GUIListBox'

                virtual void setItemOverrideColor(u32 index, const video...

                             ^

/usr/include/y/IGUIListBox.h:91:16: note: unimplemented pure virtual

      method 'setItemOverrideColor' in 'GUIListBox'

                virtual void setItemOverrideColor(u32 index, EGUI_LISTBO...

我在 clang 中有这个错误,但在 Visual Studio 2015 中没有。有人可以帮助我吗?

【问题讨论】:

什么意思,VS中没有这个错误?相反会发生什么?可以发minimal reproducible example吗? 我发现问题出在哪里。在 travis 中,库的版本和这个类的方法原型是不同的。谢谢你的帮助 【参考方案1】:

Visual Studio 将显示以下错误:

class Abstract

  virtual void NotImplemented() = 0;
;

int main()

  // error C2259 : 'Abstract' : cannot instantiate abstract class
  // note: due to following members :
  // note: 'void Abstract::NotImplemented(void)' : is abstract
  // note: see declaration of 'Abstract::NotImplemented'
  Abstract* a = new Abstract();

  return 0;

【讨论】:

【参考方案2】:

在这种情况下,需要 C++ 编译器来发出诊断,MSVC2015 符合此要求。所以你的区别在于你没有编译你认为你正在编译的东西。

如果您希望 IDE 标记潜在错误,那么您也可能不走运。由于 C++ 语法的古怪性,不可能完全普遍地发现未实现的纯虚函数(对于 pub quiz,请尝试基于奇怪重复的模板模式的东西)。出于兴趣,Java 编译器很容易发现它。

【讨论】:

【参考方案3】:

我发现问题出在哪里。在 travis 中,库的版本和这个类的方法原型是不同的。谢谢你的帮助

【讨论】:

以上是关于如何在visual studio 2015中显示“未实现的纯虚拟”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GUI 输出窗口而不是 Visual Studio 2015 中的 cmd 控制台上显示我的 C++ 程序输出?

如何在 Visual Studio 中显示特定提示

Intel parallel studio 2017 集成在visual studio 2013 中,现在如何集成到visual studio 2015

如何将 LocalDB 添加到 Visual Studio 2015 社区的 SQL Server 对象资源管理器?

Visual Studio 2015 JSX/ES2015 语法高亮

Visual Studio 2015隐藏错误列表中的Javascript错误