我正在研究一个有几个全局变量的CPP项目,例如:
class A;
class B;
A a;
B b;
我希望可以选择在a和b的不同值之间切换。理想的情况下, 根本不应该有全局变量,或者它们应该是指针 这样我们就可以轻松切换了。例如。如果我们有:
B* b; A* a;
然后我们可以在运行时更改a和b。但问题是变量 a和b在项目中被称为数百次,我将不得不改变
中的所有这些行a.something
到
a->something
可能需要一段时间。有更快的方法吗?
答案 0 :(得分:0)
# clean checkout from version control
find . -name *.c -exec perl -i -pe 's/\<a\.(\w+)/a->\1/g' \{} \;
# review changes, fix the places the regex got wrong
答案 1 :(得分:0)
取决于A的复杂程度......
#include <iostream>
struct A {
virtual void print() { std::cout << "A\n"; }
};
struct D : public A {
virtual void print() { std::cout << "D\n"; }
};
struct Ref {
void set(A* obj) { o = obj; }
void print() { o->print(); }
A* o;
};
Ref a;
int main() {
a.set(new A());
a.print();
// switch a
a.set(new D());
a.print();
}