我正在寻找一种最简单的方法来打印类中的私有链表。 (按相反顺序)
我的方法是调用将Head作为参数插入的类的函数,返回是执行任务的另一个函数。
我这样做是因为之前我必须通过Getter函数获取Head,然后将其插入函数调用中。所有这些都在课外。
void Arreglo::InfoDealer(ofstream &salida)
{
return InfoDealer_f(Head, salida);
}
void Arreglo::InfoDealer_f(NodePTR Ptr, ofstream &salida)
{
if (Ptr == NULL)
return;
InfoDealer_f(Ptr->Next, salida);
//output stuff
}
这是对的吗?有一个更好的方法吗?谢谢。 我是CS的新手,所以请耐心等待。
答案 0 :(得分:1)
我不太明白你的例子,但是,你通常有一个公共方法(接口)和一个私有帮助器方法:
class my_class
{
public:
void print( ostream& out );
private:
NodePtr _head;
void print_helper( NodePtr node, ostream& out );
}
void my_class::print( ostream& out ){ print_helper( _head, out ); }
答案 1 :(得分:1)
嗯,你通常有正确的想法,你的榜样最终应该有效 还有一些要考虑的要点:
使用流插入器种类的公共好友功能来更好地使用惯用法:
inline ostream& operator<<(ostream& o, const myclass& m) {
m.print_helper(m._head, o);
return o;
}
// Add in class:
friend ostream& operator<<(ostream& o, const myclass& m);
NodePTR
应为Node*
。