class A { voID init(int a){ _data.resize(a); //! (1) } //other parts of the code are not important ...private: std::List<std::vector<double>> _data;}
在(1)中,我收到了警告:
implicit conversion from int to size_type(aka unsigned long)
我想知道摆脱那个警告的正确方法是什么?
也许是这样的:
_data.resize(static_cast<decltype(_data)::size_type>(a)
注意:我猜代码应该改为:
init(size_t a)
但是我们假设我们不能改变类接口.
解决方法 您的示例演员以正确的方式执行:>它明确表示了施放的意图.
>它转换为正确的类型,并受到保护,以防将来的_data类型更改.
>它使用正确的演员.
如果改变界面是不可能的,那就坚持下去吧.
在使用它之前,最好为输入添加健全性检查.在将其转换为unsigned之前检查负值是最基本和最有用的值.
总结以上是内存溢出为你收集整理的在c 11风格中输入铸造的正确方法?全部内容,希望文章能够帮你解决在c 11风格中输入铸造的正确方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)