学生有一段程序不太懂,关于info2 prati.请教拉

#include <list>
using namespace std;

// Oberklasse LazyAktion
template <class T>
class LazyAktion
{
   public:
           LazyAktion( list<T>* ptLazyListe )
                  : p_ptLazyListe( ptLazyListe ) {}
      virtual ~LazyAktion() {}
      virtual void vAusfuehren() = 0;
   protected:
      list<T>*        p_ptLazyListe;        // Zeiger auf p_ListeObjekte
};


// LazyPushFront
template <class T>
class LazyPushFront : public LazyAktion<T>
{
   public:
      LazyPushFront(const T& einObjekt, list<T>* eineListe)
                      : LazyAktion<T>(eineListe)
                      , p_tObjekt(einObjekt) {}
      virtual ~LazyPushFront() {}
      void vAusfuehren() { p_ptLazyListe->push_front(p_tObjekt); }
   private:
      T        p_tObjekt;
};
看这一段  LazyAktion( list<T>* ptLazyListe )
                  : p_ptLazyListe( ptLazyListe ) {}相当于 { p_ptLazyListe= ptLazyListe}
p_ptLazyListe( ptLazyListe ) 这是什么玩意儿阿,变态老师让我们填写这个类定义,上面是他写的部分,我害怕有这种初始化方式,到底这可行吗?谢谢啦
Share |
Share

并没有定义这个函数,老师怎马能这么胡写啊?

TOP

[url=http://bbs.youzin.net/][IMG]http://bbs.youzin.net/images/logo.gif[/IMG][/URL][fly]※※※人间有味是清欢※※※[/fly]

TOP

有个新闻组专门是讨论info2 Praktikum的,不过申请好麻烦,你可以去ET的fachschaft网站上看看,有详细地说明,另外要用亚琛大学的邮箱注册。
    
     

TOP

#ifndef __LazyAktion_h
#define __LazyAktion_h

#include <list>
using namespace std;

// Oberklasse LazyAktion
template <class T>
class LazyAktion
{
   public:
      LazyAktion( list<T>* ptLazyListe )
          {
                  p_ptLazyListe=ptLazyListe;
          }
      virtual ~LazyAktion() {}
      virtual void vAusfuehren() = 0;
   protected:
      list<T>*        p_ptLazyListe;        // Zeiger auf p_ListeObjekte
};


// LazyPushFront
template <class T>
class LazyPushFront : public LazyAktion<T>
{
   public:
      LazyPushFront(const T& einObjekt, list<T>* eineListe)
                      : LazyAktion<T>(eineListe)
          {
                  p_tObjekt=einObjekt;
          }
      virtual ~LazyPushFront() {}
      void vAusfuehren() { p_ptLazyListe->push_front(p_tObjekt); }
   private:
      T        p_tObjekt;
};

我这么写吧,由他去吧,老是这种写法看不懂,算了

TOP

我也觉得这样写,很清楚,易懂。
初始化表很:(
[url=http://bbs.youzin.net/][IMG]http://bbs.youzin.net/images/logo.gif[/IMG][/URL][fly]※※※人间有味是清欢※※※[/fly]

TOP

Originally posted by dalian at 2005-6-7 23:22:
#include <list>
using namespace std;

// Oberklasse LazyAktion
template <class T>
class LazyAktion
{
   public:
           LazyAktion( list<T>* ptLazyListe )
                  : p_ptLazyListe ...

这么写没什么问题啊?很明显,ptLazyliste是你指向的外部的一个已经存在的list对象,利用这个构造函数把它传给了LazyAktion的内部保护变量p_ptLazyListe以供LazyAktion自己来调用这个列表对象,逻辑上没有任何问题啊。
另外你是大连的吧,;);)
那年清秋 燕落桥边巧相会
脉脉如水 云剪青山翠
低眉莞尔 此生欲与醉
便从此 痴痴长坐 夜夜雨声碎

TOP

Originally posted by 反方向的钟 at 2005-6-7 11:40 PM:

这么写没什么问题啊?很明显,ptLazyliste是你指向的外部的一个已经存在的list对象,利用这个构造函数把它传给了LazyAktion的内部保护变量p_ptLazyListe以供LazyAktion自己来调用这个列表对象,逻辑上没有任何问 ...

专业的就是不一样yes.gif:
11+6+1+1

TOP

另外,你的后来的写法其实和老师的有不同的,你是直接将指针赋值。而老师是把p_ptLazyListe看作一个类(list<T>类)的实例调用这个类(list<T>类)的有参数的构造函数(ptLazyListe作为参数)来得到p_ptLazyListe的。
那年清秋 燕落桥边巧相会
脉脉如水 云剪青山翠
低眉莞尔 此生欲与醉
便从此 痴痴长坐 夜夜雨声碎

TOP

你们探讨完了有了结果,我明天去问你们,哈哈。大连你肚子不疼了?

TOP