假设我有两个班需要遍历其它一些类如何指定函数参数的常量是可选的?
class Reader {
public:
template<typename T>
void Process(const T& t) {
Traverse(*this, t);
}
//... ends of recursion
};
class Writer {
public:
template<typename T>
void Process(T& t) {
Traverse(*this, t);
}
//... ends of recursion
};
的成员,我对每个类别Reader
和Writer
需要处理它们提供的功能Traverse
超载。例如:
class Foo {
public:
template<typename T>
friend void Traverse(T& t, const Foo& foo) { // for class Reader
t.Process(foo.m1);
t.Process(foo.m2);
}
template<typename T>
friend void Traverse(T& t, Foo& foo) { // for class Writer
t.Process(foo.m1);
t.Process(foo.m2);
}
private:
int m1;
int m2;
};
在Foo
类主体的功能Traverse
上述两个超载几乎相同。我怎样才能让他们成为一体?传递给const
参数
http://ideone.com/HWz2WJ – 2015-03-03 03:53:30