假設我有兩個班需要遍歷其它一些類如何指定函數參數的常量是可選的?
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