我想知道是否可以让编译器为代码发出警告/错误,如下所示:
注意:
1.是的,这是糟糕的编程风格,我们应该避免这种情况 - 但我们正在处理遗留代码,并希望编译器可以帮助我们识别这些情况.)
2.我更喜欢编译器选项(VC++)来禁用或启用对象切片(如果有的话).
class Base{};
class Derived: public Base{};
void Func(Base)
{
}
//void Func(Derived)
//{
//
//}
//main
Func(Derived());
Run Code Online (Sandbox Code Playgroud)
在这里,如果我注释掉第二个函数,第一个函数将被调用 - 而编译器(VC++和Gcc)对此感觉很舒服.
它是C++标准吗?并且我可以问编译器(VC++)在遇到这样的代码时给我一个警告吗?
非常感谢!!!
编辑:
非常感谢你的帮助!
我找不到一个编译器选项来给出错误/警告 - 我甚至在MSDN论坛上发布了这个VC++编译器顾问没有回答.所以我担心gcc和vc ++都没有实现这个功能.
因此,添加构造函数将派生类作为参数将是目前最好的解决方案.
编辑
我已经向MS提交了一个feedbak,希望他们能尽快修复它:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=421579
-Baiyan