我有一个库,我需要重构一个类X,以便每次调用该表单:
f(x); //Non-member function
取代:
x.f(); //Member function
其中f是固定方法(在所有代码中都是相同的名称),但x是类型X的实例,因此会发生变化。
是否有一种方法可以进行全局查找和替换,以便进行此类转换?
以防万一,也知道如何从会员到非会员的情况会很有趣:)
谢谢!
答案 0 :(得分:3)
使用编译器,luke。
由于我无法想象如何通过文本替换来完成此操作,而且我非常怀疑您是否有可用的重构工具[*]适用于您:
只需相应地更改类定义,以便之前的功能不再可用。然后让编译器告诉您需要将调用替换为不再存在的函数。
[*]:实际上,我怀疑是否有任何可用的C ++重构工具。
答案 1 :(得分:2)
无法想象,不是没有非常高级重构插件/插件。这比你最初想象的要复杂得多,因为你还想把x->f()
之类的任何电话改为f(*x)
。我们甚至不会遇到你有方法指针的情况......
答案 2 :(得分:0)
使用正则表达式和标记组查找和替换。
然后,您可以将f\({:i}\)
替换为\1.f()
,将f\(\*{:i}\)
替换为\1->f()