【发布时间】:2013-03-14 11:59:16
【问题描述】:
重构/替换强制转换的工具或方法的任何建议,例如:
(type*) data
进入:
convert_to_type(data)
当data 中有更高优先级的运算符、括号或换行符时,事情会变得更加棘手:
(type*) a(b)->
c
应该变成convert_to_type(a(b)->c)而不是convert_to_type(a)(b)->c等等。
【问题讨论】:
-
static_cast<type*>(data)还是类型转换重载!? -
还要注意
(type*) data是 C 风格的演员表。在大多数情况下,在处理多态类型时应该使用static_cast<type>(data)或dynamic_cast<type>(data)。 -
@MM.,他在问如何自动完成
-
你当然不能用正则表达式可靠地做到这一点,因为 C++ 不是正则的。因此,唯一想到的就是创建一个基于 clang 的智能工具。
-
您当然必须解析一些 C++。我不确定它是否需要像 clang 这样完整的东西,但它可以。毕竟,您不想更改
int function(type*);之类的内容。
标签: c++ casting refactoring