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

Đề tài: [ Solved ]Hỏi về xử lý với nhiều class !

  1. #1
    No Avatar
    pen&pen Khách

    Unhappy [ Solved ]Hỏi về xử lý với nhiều class !

    Lỗi sai mình có chú thích ở dưới. Bạn nào có thể giải thích và sữa lỗi đó giùm mình được không. Mình đang rất cần!
    Biến namen đều không thuộc lớp qlhk. Hàm timkiem_nk thuộc lớp qlhk. Biến name thuộc lớp nhankhau , biến n thuộc lớp shkhau .Làm thế nào để hàm timkiem_nk có thể sử dụng được hai biến đó vậy?

    C++ Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<iostream.h>
    4. #include<string.h>
    5. class nhankhau
    6. {
    7.     private:
    8.         char name[25];
    9.         char birthday[15];
    10.         char que[100];
    11.         char dantoc[10];
    12.         char gioitinh[4];
    13.         char tongiao[20];
    14.         long cmnd;
    15.         char nghenghiep[40];
    16.         char quanhe[10];
    17.     public:
    18.         void nhap();
    19.         void xuat();
    20.         void nhap1();
    21. };
    22. //==============================================================================
    23. class shkhau
    24. {
    25.   private:
    26.      nhankhau nk[15];
    27.      long n; //so nhan khau
    28.      char ten_ch[25];
    29.   public:
    30.     void input();
    31.     void output();
    32.              void input1();
    33. };
    34. //==============================================================================
    35. class qlhk
    36. {
    37.     private:
    38.         shkhau hk[15];
    39.         int maso; //so luong so ho khau hien co (ma so cua co ho khau)
    40.     public:
    41.         void setdata();
    42.         void print();
    43.         void print1(shkhau x);
    44.                           void timkiem_nk(nhankhau x);
    45. };
    46. //==============================================================================
    47. void nhankhau::nhap()
    48. {
    49.     cout<<"\n Ten: ";
    50.     cin.ignore(1);
    51.     cin.get(name,25);
    52.     cout<<"\n Quan he voi chu ho(neu la chu ho thi nhap vao chu ho): ";
    53.     cin.ignore(1);
    54.     cin.get(quanhe,10);
    55.     cout<<"\n Ngay/thang/nam sinh:\t";
    56.     cin.ignore(1);
    57.     cin.get(birthday,15);
    58.     cout<<"\n Que quan: ";
    59.     cin.ignore(1);
    60.     cin.get(que,100);
    61.     cout<<"\n Dan toc: ";
    62.     cin.ignore(1);
    63.     cin.get(dantoc,10);
    64.     cout<<"\n Gioi tinh: ";
    65.     cin.ignore(1);
    66.     cin.get(gioitinh,4);
    67.     cout<<"\n Ton giao: ";
    68.     cin.ignore(1);
    69.     cin.get(tongiao,20);
    70.     cout<<"\n So chung minh nhan dan:\t";
    71.     cin>>cmnd;
    72.     cout<<"\n Nghe nghiep: ";
    73.     cin.ignore(1);
    74.     cin.get(nghenghiep,40);
    75. }
    76. //--------------------------------
    77. void nhankhau::nhap1()
    78. {
    79.     cout<<"\nTen: ";
    80.     cin.ignore(1);
    81.     cin.get(name,25);
    82. }
    83. //-----------------------------------
    84. void nhankhau::xuat()
    85. {
    86.   cout<<"\n Ten:"<<name<<"\n Quan he: "<<quanhe
    87.   <<"\n\t Ngay/thang/nam sinh:\t"<<birthday<<"\n\tQue quan: "<<que
    88.   <<"\n\tDan toc: "<<dantoc<<"\n\tGioi tinh: "<<gioitinh
    89.   <<"\n\tTon giao: "<<tongiao<<"\n\tSo chung minh nhan dan:\t"<<cmnd
    90.   <<"\n\tNghe nghiep: "<<nghenghiep;
    91. }
    92. //==============================================================================
    93. void shkhau::input1()
    94. {
    95.     cout<<"\nChu ho: ";
    96.    cin.ignore(1);
    97.    cin.get(ten_ch,25);
    98. }
    99. //--------------------------------------
    100. void shkhau::input()
    101. {
    102.     cout<<"\n So nhan khau: ";
    103.     cin>>n;
    104.     for(int i=1;i<=n;i++)
    105.     {
    106.         cout<<"\nThanh vien "<<i<<endl;
    107.         nk[i].nhap();
    108.     }
    109. }
    110. //----------------------------------------
    111. void shkhau::output()
    112. {
    113.     for(int i=1;i<=n;i++)
    114.     {
    115.         cout<<"\n"<<i<<"."<<endl;
    116.         nk[i].xuat();
    117.     }
    118. }
    119. //==============================================================================
    120. void qlhk::setdata()
    121. {
    122.     cout<<"\nTong so so ho khau: "; cin>>maso;
    123.     for(int i = 1;i<=maso;i++)
    124.     {
    125.         cout<<"\nMa so: "<<i<<endl;
    126.       hk[i].input1();
    127.         hk[i].input();
    128.     }
    129. }
    130. //-----------------------------------------
    131. void qlhk::print()
    132. {
    133.     for(int i = 1;i<=maso;i++)
    134.    {
    135.     cout<<"Ma so: "<<i;
    136.         hk[i].output();
    137.    }
    138. }
    139. //-----------------------------------------
    140. void qlhk ::timkiem_nk(nhankhau x)
    141. {
    142.     char ten[25];
    143.     for(int i=1;i<=maso;i++)
    144.     for(int j=1;j<=n;j++)  //BI LOI O DAY: Undefined  symbol 'n'
    145.     if(strcmp(name,ten)==0) //LOI: Undefined  symbol 'name'
    146.         x.xuat();
    147. }
    148. //==============================================================================
    149. void main()
    150. {
    151.     clrscr();
    152.     nhankhau x;
    153.     qlhk vungcao;
    154.    vungcao.setdata();
    155.     vungcao.print();
    156.    cout<<"\nTIM KIEM NHAN KHAU: \n";
    157.    x.nhap1();
    158.    vungcao.timkiem_nk(x);
    159.    getch();
    160. }
    Đã được chỉnh sửa lần cuối bởi pen&pen : 19-11-2008 lúc 09:32 PM.

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

    Mình không rõ lắm lắm , nhưng theo mình hiểu bạn sử dụng n mà không hề khai báo n ở đâu ra nên nó báo lỗi ở đó là chắc rồi . trong void bạn cũng ko khai báo n nữa sửa lại xem có tốt hơn ko nhé . Chỉ biết có thế thôi

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

    đơn giản là vì trong class qlhk của cậu không có member nào tên là "n" và "name" cả.
    Cậu cần 1 phương thức để biết được cậu đã tạo ra bao nhiêu nhân khẩu và 1 phương thức trả về name của 1 nhân khẩu bất kỳ chứ không thể làm bừa như vậy được
    code ra gió bão

  4. #4
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Tạo hai phương thức trong hai lớp shkhau và nhankhau trả về hai giá trị đó là được . Rồi trong class qlhk xài hai phương thức vừa tạo để lấy name và n . OK
    I'm superman

  5. #5
    No Avatar
    pen&pen Khách

    Trích dẫn Nguyên bản được gửi bởi trung_dk070384 Xem bài viết
    Tạo hai phương thức trong hai lớp shkhau và nhankhau trả về hai giá trị đó là được . Rồi trong class qlhk xài hai phương thức vừa tạo để lấy name và n . OK
    Bạn trung_dk070384 có thể nói rõ hwn và "cụ thể hóa " giùm mình được không? Thanks nhìu!

  6. #6
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    Mặc định [ Solved ]Hỏi về xử lý với nhiều class !

    Đại loại là nếu ngoài class thì bạn ko thể truy cập vào các dữ liệu riêng của class đó. Nếu bạn muốn lấy dữ liệu thì phải có hàm để lấy
    C++ Code:
    1. void qlhk ::timkiem_nk(nhankhau x)
    2. {
    3.     char ten[25];
    4.     for(int i=1;i<=maso;i++)
    5.     for(int j=1;j<=n;j++)  //BI LOI O DAY: Undefined  symbol 'n' ->ko thể lấy n dc
    6.     if(strcmp(name,ten)==0) //LOI: Undefined  symbol 'name'
    7.         x.xuat();
    8. }
    Muốn lấy trong class shkhau phải có hàm lấy n, Cho cái này vào class shkhau dưới chữ public ý
    C++ Code:
    1.      int getSoNhanKhau()
    2.      {
    3.          return n;
    4.      }
    Bài của bạn làm thì cần hiểu lấy cái ji ở đâu từ đối tượng nào. Hãy nghĩ kỹ hơn về cách duyệt ở vòng for nhé của bạn để tìm kiếm nhé. Đầu vào hàm tìm kiếm là tìm nhân khẩu, sử dụng tên để tìm, so sánh tên có trùng với tên nào quản lý hộ khẩu. Từ cái qlhk này muốn đi đến tên hộ khẩu qua shk -> nk, từ cái nhân khâu này mới lấy dc tên. Tên này muốn lấy cũng phải có getName trong class nhankhau
    Đã được chỉnh sửa lần cuối bởi thienthan34 : 20-11-2008 lúc 12:16 PM.
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  7. #7
    Ngày gia nhập
    12 2007
    Bài viết
    54

    Biến name và n đều không thuộc lớp qlhk
    PHP Code:
    class qlhk
    {
        private:
            
    shkhau hk[15];
            
    int maso// 
    Bạn bị hiểu nhầm khái niệm , lớp qlhk có thuộc tính đó là mảng đối tượng hk , nhưng bạn nhầm tưởng nó có thuộc tính là name trong class hk . Li do vì đối tượng ko thể truy xuất vào thuộc tính nếu nó ở ngoài lớp .
    Để khắc phục tính trạng này bạn có thể tạo 1 hàm lấy ra giá trị của name
    PHP Code:
    chargetname{ return name 
    còn cái sau tương tự .
    Rất mong được mọi người giúp đỡ :

    Kiến thức mình biết chỉ là hạt cát trên sa mạc

Các đề tài tương tự

  1. [ Solved ]Lỗi class với goto
    Gửi bởi ngocnam_it trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 16-11-2008, 02:40 PM
  2. [ Solved ]Class hàng bán
    Gửi bởi luxiphe89 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 26
    Bài viết cuối: 09-11-2008, 10:04 AM
  3. [ Solved ]Class đơn thức,đa thức.ai biết chỉ đệ cái
    Gửi bởi newcommer trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 9
    Bài viết cuối: 05-11-2008, 10:32 AM
  4. [ Solved ]Hoàn thiện chương trình class phân số
    Gửi bởi thangit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 15-09-2008, 06:57 PM
  5. [ Solved ]Hỏi về class?
    Gửi bởi khanh_0507 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 12-09-2008, 10:54 AM

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