【发布时间】:2015-07-22 11:50:42
【问题描述】:
关于警告C4673 的 MSDN 文章包含此示例,该示例发出带有特定消息的警告:
Base: this base class is inaccessible
// C4673.cpp // compile with: /EHsc /W4 class Base { private: char * m_chr; public: Base() { m_chr = 0; } ~Base() { if(m_chr) delete m_chr; } }; class Derv : private Base { public: Derv() {} ~Derv() {} }; int main() { try { Derv D1; // delete previous line, uncomment the next line to resolve // Base D1; throw D1; // C4673 } catch(...) {} }
很遗憾,MSDN 文章没有对这个问题给出任何解释。我不明白上面的代码有什么问题。为什么会发出警告?
这是 MSVC 2013 - v120 工具集。
【问题讨论】:
-
看不到代码很难提供任何建议
-
@Petr:正如我所说,代码在 MSDN 文章中。我把它贴在这里。
-
那么我建议将您的问题改写为“我不明白...的示例”,并且根本不提及您的代码。
-
FWIW,我发现this SO Q&A 似乎表明此特定警告有时会在没有正当理由的情况下发出。同样 FWIW,我已向 MSDN 添加了反馈,即有关警告的文章没有帮助,因为它没有指出警告 关于 的内容。我假设这是特定于 MSVC 的异常处理机制的东西。
-
@Barry:
catch没关系,警告是在throw站点生成的,似乎不受catch的影响。
标签: c++ visual-c++ visual-studio-2013