【发布时间】:2010-10-09 11:38:40
【问题描述】:
我想知道是否可以让编译器针对以下代码发出警告/错误:
注意:
1.是的,这是一种糟糕的编程风格,我们应该避免这种情况——但我们正在处理遗留代码,希望编译器可以帮助我们识别这种情况。)
2.我更喜欢编译器选项 (VC++) 来禁用或启用对象切片,如果有的话。
class Base{};
class Derived: public Base{};
void Func(Base)
{
}
//void Func(Derived)
//{
//
//}
//main
Func(Derived());
在这里,如果我注释掉第二个函数,第一个函数将被调用 - 编译器(VC++ 和 Gcc)对此感到满意。
它是 C++ 标准吗?遇到此类代码时,我可以要求编译器(VC++)给我一个警告吗?
非常感谢!!!
编辑:
非常感谢您的帮助!
我找不到提供错误/警告的编译器选项 - 我什至在 MSDN 论坛上为 VC++ 编译器顾问发布了这个,但没有任何答案。所以恐怕gcc和vc++都没有实现这个功能。
因此,添加以派生类为参数的构造函数将是目前最好的解决方案。
编辑
我已向 MS 提交反馈,希望他们能尽快修复:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=421579
-白燕
【问题讨论】:
标签: c++ compiler-construction truncate slice