0
我有一個調用幾個函數來處理其數據的算法。這些功能中的每一個都共享和操縱許多相同的變量。因此,我試圖避免有一組函數包含一長串引用參數,因爲我發現變得很難閱讀,特別是因爲這些變量中有很多是STL容器。其結果是,我實現了一個函子來進行算法的工作,並定義的仿函數的函數封裝,如下圖所示使用函數調用函數
class myfunctor {
private:
... list of shared members ...
void A(..args..) { ..do some work on shared members.. }
void B(..args..) { ..do some work on shared members.. }
void C(..args..) { ..do some work on shared members.. }
public:
void operator()(class1& X, class2& Y) {
A(..);
..
B(..);
..
C(..);
..etc..
}
};
void algorithm(class1& X, class2& Y) {
myfunctor obj;
obj(X, Y);
}
我只是好奇,看看是否有可能是一個更好的辦法實現幾個都依賴於相同變量的函數,如果這被認爲是不好的做法?
@anon - 啊,我以前從來沒有注意到這些。感謝您的通知。 – entitledX
爲什麼使這個函子而不是函數?如果參數列表真的很笨拙,爲什麼不用'A(class1&X,class2&Y)','B(class1&X,class2&Y)等等? – Beta
X和Y在你的函數中如何使用。在這個代碼示例中,你很難清楚你想要做什麼 - 你能舉出一個更具體的例子嗎?從你的描述來看,這聽起來像這些函數應該只是成員函數。 –