Visual Studio C ++:在成员函数和非成员函数之间进行重构

时间:2011-02-28 11:40:59

标签: c++ visual-studio visual-c++

我有一个库,我需要重构一个类X,以便每次调用该表单:

f(x); //Non-member function

取代:

x.f(); //Member function

其中f是固定方法(在所有代码中都是相同的名称),但x是类型X的实例,因此会发生变化。

是否有一种方法可以进行全局查找和替换,以便进行此类转换?

以防万一,也知道如何从会员到非会员的情况会很有趣:)

谢谢!

3 个答案:

答案 0 :(得分:3)

使用编译器,luke。

由于我无法想象如何通过文本替换来完成此操作,而且我非常怀疑您是否有可用的重构工具[*]适用于您:

只需相应地更改类定义,以便之前的功能不再可用。然后让编译器告诉您需要将调用替换为不再存在的函数。

[*]:实际上,我怀疑是否有任何可用的C ++重构工具。

答案 1 :(得分:2)

无法想象,不是没有非常高级重构插件/插件。这比你最初想象的要复杂得多,因为你还想把x->f()之类的任何电话改为f(*x)。我们甚至不会遇到你有方法指针的情况......

答案 2 :(得分:0)

使用正则表达式和标记组查找和替换。

然后,您可以将f\({:i}\)替换为\1.f(),将f\(\*{:i}\)替换为\1->f()