Announcement

Collapse
No announcement yet.

Không thay đổi phương thức trong cùng Class được!

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

  • [C++] Không thay đổi phương thức trong cùng Class được!

    Giúp mình lỗi nhỏ này với!
    Code:
    #include<iostream.h>
    #include<conio.h>
    #include<iomanip.h>
    
    class Stack
    {
       private:
          int top;
          int S[20];
       public:
          Stack()
          {
    	 top = 0;
          }
          void Them();
          void Them(int n);
          void Lay();
          void Hienthi();
          void NhiPhan(int n, Stack M);
    };
    void Stack::Them()
    {
       cout<<endl<<"Them vao Top gia tri: ";
       cin>>S[top]; cin.ignore(1);
       top+=1;
    }
    void Stack::Them(int n)
    {
       S[top] = n;
       top+=1;
    }
    void Stack::Lay()
    {
       if(top == 0)
          cout<<endl<<"Stack rong"<<endl;
          else
           top-=1;
    }
    void Stack::Hienthi()
    {
       if(top == 0)
         cout<<"Stack rong"<<endl;
          else
          {
    	 cout<<"STACK "<<endl;
    	 for(int i=top-1; i>=0; i--)
    	    cout<<S[i]<<endl;
          }
    }
    
    void Stack::NhiPhan(int n, Stack M)
    {
          M.Them(n);
    }
    
    
    void main()
    {
       Stack A;
       int n;
       cout<<"Nhap n:  ";
       cin>>n; cin.ignore(1);
       A.NhiPhan(n, A);    /*Dòng này A đã thay đổi!*/
       A.Hienthi();          /*Nhưng kết quả thì A vẫn không đổi!*/
       getch();
    }
    Nếu trong void main() mình viết là Them(567); chẳng hạn thì kết quả đối tượng A sẽ thay đổi! Nhưng khi tóm gọn phương thức này trong NhiPhan(n, A) thì KQ không thay đổi! Mặc dù Them(n) và NhiPhan(n, A) đều chung một Class. Tại sao lại có điều vô lý như vậy??? Sửa lại hộ mình, cảm ơn các bạn nhiều nhé ~~~
    Last edited by lytieulong_269; 11-02-2012, 20:09.

  • #2
    Mình thấy thì biến M bạn truyền vào hàm NhiPhan(int n, Stack M) thì đó là tham trị, vì vậy hàm đó chỉ lấy giá trị M tính toán, sau khi thoát ra khỏi hàm thì giá trị M không thay đổi (dù cho trong hàm NhiPhan có làm bất cứ cái gì đi chăng nữa)
    Cách sửa là bạn chỉ cần chỉnh biến M thành kiểu tham biến để truyền vào hàm như vầy: NhiPhan(int n, Stack &M)
    Là ok ^_^
    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
      à! hi được rồi! cảm ơn bạn nhiều nha.

      Comment

      LHQC

      Collapse
      Working...
      X