Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Hỏi về gọi hàm ở lớp này từ hàm ở lớp khác!?

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    17

    Mặc định Hỏi về gọi hàm ở lớp này từ hàm ở lớp khác!?

    Em có class Xa, class Huyen và class Tinh.
    Huyen thì chứa danh sách các xã, Tỉnh thì chứa danh sách các Huyện. (danh sách = mảng)
    Từ Huyện em có thể thêm vào 1 Xã.
    VD:
    Huyen H1;
    Xa A;
    H1.themXa(A); // thành công

    Nhưng nếu từ Tỉnh thì ta phải thêm xã em làm như sau mà không được.
    Tinh T;
    T.themXaTaiTinh(A,H1);

    Vì hàm themXa(Xa a) đã thành công cho nên
    trong hàm themXaTaiTinh(Xa a, Huyen h) em gọi hàm themXa(a), cụ thể:
    themXaTaiTinh(Xa a, Huyen h)
    {
    h.themXa(a);
    }
    Đó, em làm như vậy mà không thể thêm được xã A vào huyện H1???
    Ai giải thích giúp em với.
    Yahoo: theanh3112, nếu được xin chỉ giáo qua yahoo lun. Em cảm ơn!

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Code đâu, viết đoạn demo đi ! Code cậu chạy không được đâu có nghĩa là nó sai.
    Tui đoán ý cậu thế này phải không ?
    C++ Code:
    1. #include <iostream>
    2. #include <vector>
    3.  
    4. using namespace std;
    5.  
    6. class Xa {
    7. };
    8.  
    9. class Huyen {
    10. private :
    11.     vector< Xa > x_vec;
    12. public :
    13.     void themXa( const Xa& o ) {
    14.         x_vec.push_back( o );
    15.     }
    16. };
    17.  
    18. class Tinh {
    19. private :
    20.     vector< Huyen > h_vec;
    21. public :
    22.     void themXa( const Xa& o, int idx ) {
    23.         ( h_vec.at( idx ) ).themXa( o );
    24.     }
    25. };
    26.  
    27. int main()
    28. {
    29.     return 0;
    30. }
    Đã được chỉnh sửa lần cuối bởi rox_rook : 23-11-2008 lúc 02:08 PM.

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    17

    Toàn bộ code liên quan tới phần này em mà copy ra đây thì hơi nhiều và sẽ loãng.
    Vì vậy trong vấn đề trên.
    1. Class Xa chắc chắn không có vấn đề gì.
    2. Vậy em sẽ đưa các class Huyen và Tinh lên.

    Code:
    #ifndef huyen_h
    #define huyen_h
    const int MAX_XA = 10;
    class Huyen
    {	
    private:
    	char *tenhuyen;	
    	int dansohuyen;	
    public:
    	Xa danhsachxa[MAX_XA];
    	int soluongxa;
    	char *mahuyen;
    
    	Huyen();
    	Huyen(char *mah, char *tenh);
    	void themXa(Xa a); //them 1 xa
    };
    #endif
    Trong file Huyen.cpp có hàm themXa(Xa a) như sau:

    Code:
    void Huyen::themXa(Xa a)
    {
    	if(soluongxa < MAX_XA)
    	{		
    		for (int i = soluongxa; i >= 0; --i)
    			danhsachxa[i] = danhsachxa[i-1];
    		danhsachxa[0] = a;
    		++soluongxa;
    	}
    	else
    	{
    		cout<<"khong the chen duoc nua."<<endl;
    	}
    // hàm này chạy ngon lành khi gọi từ một đối tượng thuộc lớp Huyen. 
    //VD: 
    // Xa A;
    // Huyen.themXa(A); => thành công rồi.
    }
    Đây là class Tỉnh:
    Code:
    #include "Xa.h"
    #include "Huyen.h"
    #ifndef Tinh_h_
    #define Tinh_h_
    const int MAX_HUYEN=10;
    class Tinh : public Huyen
    {
    private:
    	char *matinh;
    	char *tentinh;
    	int dansotinh;
    	int tongdansohuyen;
    public:
    	Huyen danhsachhuyen[MAX_HUYEN];
    	int soluonghuyen;
    	int soluongxa;
    	Tinh();
    	Tinh(char *mat, char *tent);
    	void themXaTaiTinh(Xa a, Huyen h);
    };
    #endif
    Trong Tinh.cpp có định nghĩa hàm themXaTaiTinh(Xa a, Huyen h) như sau:
    Code:
    void Tinh::themXaTaiTinh(Xa a, Huyen h)
    {	
    	h.themXa(a);
    }
    Vấn đề gặp phải, khi chạy hàm main là:
    Code:
    Tinh TA("TA1","The Anh Tinh");
    Huyen H1("H1","Huyen so 1");
    TA.themHuyen(H1);
    Huyen H2("H2","Huyen so 2");
    TA.themHuyen(H2);
    
    Xa XA("XA","Xa A",2); // cái này để tạo 1 đối tượng Xã thuộc lớp Xã theo thứ tự là: mã xã, tên xã, dân số
    TA.themXaTaiTinh(XA, H1); //=> vấn đề là gọi cái này thì nó không thêm. (1)
    //H1.themXa(XA);	=> gọi cái này thì nó thêm được. (2)
    	
    TA.inDanhSachXa(H1); // hàm này khi gọi cái (1) thì nó không in ra, còn gọi cái số (2) thì nó in ra.
    Bác giúp em giải quyết vấn đề này với. Em muốn là gọi hàm themXaTaiTinh(Xa a, Huyen h) thì nó phải thêm Xã XA vào Huyện H1.
    Đã được chỉnh sửa lần cuối bởi theanh3112 : 23-11-2008 lúc 02:15 PM.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn