相关疑难解决方法(0)

如何在对象切片时生成编译器警告/错误

我想知道是否可以让编译器为代码发出警告/错误,如下所示:

注意:

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

c++ compiler-construction truncate slice

17
推荐指数
3
解决办法
2737
查看次数

标签 统计

c++ ×1

compiler-construction ×1

slice ×1

truncate ×1