Announcement

Collapse
No announcement yet.

Lỗi nhỏ khi truy cập đến Class!!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Lỗi nhỏ khi truy cập đến Class!!

    Code:
    Khi mình loại bỏ 2 dòng 18 và 44 (co chu thich) thì run tốt. Thế nên lỗi đã xuất hiện ở đây,  mình đã thử mọi cách  nhưng vẫn ko sửa được. Nhờ vào các bạn vậy! Cảm ơn...
    
    [CODE]#include<iostream.h>
    #include<conio.h>
    #include<iomanip.h>
    
    class Toado2D
    {
          private:
             int x;
             int y;
             Toado2D *next;
          public:
          
             Toado2D()
             {
                x = 0;
                y = 0;
                next = NULL;
             }  
             ~Toado2D()
             {
                delete next;
             }
             void Laynext(Toado2D *M);        //dong 18
             int operator<=(Toado2D *M);
             int operator=(Toado2D *M);
             int operator>(Toado2D *M);
             friend istream &operator>>(istream &s, Toado2D *M);
             friend ostream &operator<<(ostream &s, Toado2D *M);
    };
    Toado2D *first, *last, *p;
    
    void Toado2D::Laynext(Toado2D *M)
    {
       this->next = p;
    }
    void NhapToaDo()
    {
       char c;
       do
       {
          p = new Toado2D;
          cin>>p;
          if(first = NULL)
          {
             first = p;
             last = p;
          }
           else
          {
             last->Laynext(p);                 //dong 44
             last = p;
          } 
          cout<<"Ban co muon nhap tiep khong? (c/k)";
          c = getch();
       }while(c!='k');
    }
    
    istream &operator>>(istream &s, Toado2D *M)
    {
       cout<<"Nhap toa do (x, y): ";
       s>>M->x>>M->y;
       return s;
    }
    ostream &operator<<(ostream &s, Toado2D *M)
    {
       cout<<"Toa do da nhap \n";
       s<<"("<<M->x<<","<<M->y<<")"<<endl;
       return s;
    } 
    
    int Toado2D::operator<=(Toado2D *M)
    {
       if(this->x <= M->x && this->y <= M->y)
       return 1;
          else
          return 0;    
    }
    /*int Toado2D::operator=(Toado2D *M)
    {
       if(this->x = M->x && this->y = M->y)
       return 1;
          else
          return 0; 
    } */
    int Toado2D::operator>(Toado2D *M)
    {
       if(this->x > M->x && this->y > M->y)
       return 1;
          else
          return 0;
    }
    void Doi(Toado2D *&M, Toado2D *&N)
    {
       Toado2D *temp;
       temp = M;
       M = N;
       N = temp;
    }
    main()
    {
       first = NULL;
       last = NULL;
       NhapToaDo();
       getch();
        
    }
    [/CODE]
    Last edited by lytieulong_269; 14-02-2012, 20:21.

  • #2
    void Toado2D::Laynext(Toado2D *M)
    {
    this->next = p;
    }
    bạn truyền M vào làm gì vậy ?
    Có thể đại học không là cánh cửa duy nhất để vào đời, nhưng trước khi bạn đủ lớn để biết mình muốn gì thì đại học là "tấm vé" bảo đảm rằng bạn có ít nhất một giá trị.

    Comment


    • #3
      Originally posted by 09520082 View Post
      void Toado2D::Laynext(Toado2D *M)
      {
      this->next = p;
      }
      bạn truyền M vào làm gì vậy ?
      Để nối next của last vào p đó anh! Anh nhìn dòng 44 nữa đi.

      Comment


      • #4
        Bạn truyền M vào mà có sử dụng đâu nên làm sao mà nối được ?
        Có thể đại học không là cánh cửa duy nhất để vào đời, nhưng trước khi bạn đủ lớn để biết mình muốn gì thì đại học là "tấm vé" bảo đảm rằng bạn có ít nhất một giá trị.

        Comment


        • #5
          Có sử dụng nè bạn:
          Code:
          void Laynext(Toado2D *M);        //dong 18
          last->Laynext(p);                 //dong 44

          Comment


          • #6
            Bạn không hiểu vấn đề rồi, hàm bạn viết nè:
            void Toado2D::Laynext(Toado2D *M)
            {
            this->next = p;
            }
            tham số Toado2D *M có được sử dụng đâu @@, bên trong hàm chẳng đụng chạm gì M cả
            rồi sau này bạn có gọi last->Laynext(p) thì p truyền vào hàm có được sử dụng làm gì đâu
            Có thể đại học không là cánh cửa duy nhất để vào đời, nhưng trước khi bạn đủ lớn để biết mình muốn gì thì đại học là "tấm vé" bảo đảm rằng bạn có ít nhất một giá trị.

            Comment


            • #7
              uh uh.. mình nhầm! sr

              phải viết là void Laynext(Toado2D *p);
              Hình như viết lại luôn Laynext(); cũng được mà phải ko? vì p là biến toàn cục mà!

              Comment


              • #8
                Hình như bạn chưa viết các hàm như addHead, addTail để thêm node vào list
                Có thể đại học không là cánh cửa duy nhất để vào đời, nhưng trước khi bạn đủ lớn để biết mình muốn gì thì đại học là "tấm vé" bảo đảm rằng bạn có ít nhất một giá trị.

                Comment

                LHQC

                Collapse
                Working...
                X