首先,我沒有看到爲什麼你想讓其他函數看到一個數據而沒有方法的對象。傳遞通常類型的對象時會遇到什麼問題?
二,什麼應該是功能看?一個包含所有公共成員變量的對象?或者只有一個帶有私有成員變量,並且更少 accessor/mutator方法比DataProcessorCore更少?
C++中一個比較常見的習慣用法是把儘可能多的方法放在以外的這個對象。
所以,你的解決方案可能是這樣的:
class DataProcessor {
// Fill in only the basics. Member variables and a small set of "core" functions to access/modify them.
};
void ComplexOperation(DataProcessor& proc) { ...}
float AnotherOperation(DataProcessor& proc, int i) { ...}
然後消除DataProcessorCore
完全。你不需要它,因爲你有包含數據的對象(以及我假設的一小組核心函數),所有更廣泛的功能都可以作爲自由函數來實現,而不是在一個被取消的類中。
標準庫廣泛地使用這種技術。想想std::sort
這不是個別容器類中的一員,而是一個免費的功能,可以在的容器被稱爲。
我想,通過「會員」你的意思是「性」,對不對? – Konamiman 2009-12-15 08:29:32
恕我直言,方法是成員太... – 2009-12-15 08:52:42
如果你不想在同一個地方的方法和成員,不要使用對象 – 2009-12-15 09:38:23