我重構了一個代碼,其中一個類有一個朋友函式做很多事情。
class Foo
{
friend void do_something(Foo& foo);
};
void do_something(Foo& foo)
{
// More than 2000 lines of ugly code
}
我想將內容拆分為do_something幾個小功能。看起來像這樣的東西:
void do_something(Foo& foo)
{
if(case_1) do_1(foo);
else if(case_2) do_2(foo);
else if(case_3) do_3(foo);
//...
}
是否有一種設計可以將友誼轉移到子功能do_x(Foo&)而無需在類中宣告它們,或者類似的東西來拆分代碼?
注意:僅限 C 11
注意:我不想把子函式寫成宏
uj5u.com熱心網友回復:
我建議您創建一個類似的 class ,而不是讓do_somethingas 函式呼叫其他子函式DoSomehting。
然后你可以將這個類宣告為friend class DoSomehting;. 所以這些子函式可能是它的私有方法。要呼叫的方法 -- 可以是一個名為的公共方法,例如void DoSomehting::process(Foo& foo):
class Foo
{
friend class DoSomething;
};
class DoSomething
{
public:
void process(Foo& foo)
{
if(case_1) do_1(foo);
else if(case_2) do_2(foo);
else if(case_3) do_3(foo);
//...
}
private:
void do_1(Foo& foo);
void do_2(Foo& foo);
void do_3(Foo& foo);
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464676.html
