首页 > 试题广场 >

纠正下列List定义里的错误,并请写出与编译器将对List和

[问答题]
纠正下列List定义里的错误,并请写出与编译器将对List和函数f()的定义生成的代码等价的代码。用你手写的代码和编译器从模板生成的代码运行一些小的测试实例。如果你的系统提供了可能性的话,请对这些代码做一个比较。
template<class T> class List {
  struct Link {
    Link* pre;
    Link* suc;
    T val;
    Link(Link* p, Link* s,const T& v) :pre(p), sur(s), val(v) { }
  }      // 语法错误:缺少分号
  Link* head;
public:
  List() :head(7) { }   // 错误:用int初始化指针
  List(const T& t) : head(new Link(0,o,t)) { }     // 错误:无定义标识符o
  // ...
  void print_all() const { for (Link* p = head; p; p=p->sur) cout << p->val << '\n'; }
};

这道题你会答吗?花几分钟告诉大家答案吧!