首先,我没有看到为什么你想让其他函数看到一个数据而没有方法的对象。传递通常类型的对象时会遇到什么问题?
二,什么应该是功能看?一个包含所有公共成员变量的对象?或者只有一个带有私有成员变量,并且更少 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