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

Đề tài: Lập trình hướng đối tượng | Cài đặt class template trong C++?

  1. #1

    Mặc định Lập trình hướng đối tượng | Cài đặt class template trong C++?

    Các bạn giúp mình sửa lỗi bài này với. Ở toán tử "-" là lấy phần bù của 2 mảng.

    C++ Code:
    1. template <class T>
    2. class Mang
    3. {
    4. private:
    5.     int m_iKichThuoc;
    6.     T *m_pPhanTu;
    7.  
    8. public:
    9.     //Nhom tao huy
    10.     Mang()
    11.     {
    12.         m_iKichThuoc = 1;
    13.         m_pPhanTu = new T[1];
    14.         m_pPhanTu[0] = 0;
    15.     }
    16.  
    17.     Mang(const Mang &m)
    18.     {
    19.         m_iKichThuoc = m.m_iKichThuoc;
    20.         m_pPhanTu = new T[m_iKichThuoc];
    21.  
    22.         for (int i = 0; i < m_iKichThuoc; i++)
    23.             m_pPhanTu[i] = m.m_pPhanTu[i];
    24.     }
    25.  
    26.     ~Mang()
    27.     {
    28.         delete []m_pPhanTu;
    29.     }
    30.  
    31.     //Nhom toan tu
    32.     friend ostream & operator <<(ostream &os, Mang m)
    33.     {
    34.         os << "Cac phan tu la: " << endl;
    35.         for (int i=0; i < m.m_iKichThuoc; i++)
    36.             cout << m.m_pPhanTu[i] << endl;
    37.         return os;
    38.     }
    39.    
    40.    
    41.     friend istream & operator >> (istream & is, Mang &m)
    42.     {            
    43.         cout << "Nhap so luong phan tu trong mang: ";
    44.         is >> m.m_iKichThuoc;
    45.        
    46.         m.m_pPhanTu = new T[m.m_iKichThuoc];
    47.        
    48.         for (int i=0; i<m.m_iKichThuoc; i++)
    49.         {
    50.             cout << "Nhap phan tu thu "<< i + 1 << " : \n" ;
    51.             is >> m.m_pPhanTu[i];
    52.         }
    53.         return is;
    54.     }
    55.         int demSoPhanTuChung(const Mang &m)
    56.     {
    57.         int dem = 0;
    58.         for (int i = 0; i < m_iKichThuoc; i++)
    59.             for (int j = 0; j < m.m_iKichThuoc; j++)
    60.                 if (m_pPhanTu[i] == m.m_pPhanTu[j])
    61.                     dem++;
    62.         return dem;
    63.     }
    64.  
    65.         Mang operator =(const Mang &m)
    66.     {
    67.         m_iKichThuoc = m.m_iKichThuoc;
    68.  
    69.         m_pPhanTu = new T[m_iKichThuoc];
    70.         for (int i=0; i<m_iKichThuoc; i++)
    71.         {
    72.             m_pPhanTu[i] = m.m_pPhanTu[i];
    73.         }
    74.         return *this;
    75.     }
    76.  
    77.     Mang operator -(const Mang &m)
    78.     {
    79.         Mang c;
    80.         int t=0;
    81.  
    82.         c.m_iKichThuoc = m_iKichThuoc - demSoPhanTuChung(m);
    83.         c.m_pPhanTu = new T[c.m_iKichThuoc];
    84.  
    85.         for (int i = 0; i < m_iKichThuoc; i++)
    86.             for (int j = 0; j < m.m_iKichThuoc; j++)
    87.                 if (m_pPhanTu[i] != m.m_pPhanTu[j])
    88.                 {
    89.                     c.m_pPhanTu[t] = m_pPhanTu[i];
    90.                     t++;
    91.                 }
    92.         c.rutGonMang();
    93.         return c;
    94.     }
    95. };

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

    bạn sửa lại như sau
    PHP Code:
    Mang operator =(const Mang &m)
    {
        
    Mang c;
        
    int t=0;
        
    c.m_iKichThuoc m_iKichThuoc demSoPhanTuChung(m);
        
    c.m_pPhanTu = new T[c.m_iKichThuoc];
        for (
    int i 0m_iKichThuoci++)
        {
            
    bool f true;
            for (
    int j 0m.m_iKichThuocj++)
            {
                if (
    m_pPhanTu[i] == m.m_pPhanTu[j])
                {
                    
    false;
                    break;
                }
            }
            if(
    == true)
            {
                
    c.m_pPhanTu[t] = m_pPhanTu[i];
                
    t++;
            }
        }
        
    c.rutGonMang();
        return 
    c;

    Đã được chỉnh sửa lần cuối bởi rua_con : 08-04-2009 lúc 06:41 PM.

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

  1. Mã nguồn C Lỗi Thư viện template không sử dụng được trong class khác
    Gửi bởi cuongquoc115 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 30-08-2013, 10:16 PM
  2. Mã nguồn C Lỗi Lỗi see reference to class template instantiation 'std::list<_Ty>' being khi sử dụng Iterator cho class tự xây dựng
    Gửi bởi Mr_Chan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 10-07-2013, 01:58 AM
  3. Học xong về class và template trong C++, học j tiếp theo?! @@
    Gửi bởi Fredy trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 16-07-2011, 08:38 AM
  4. Class template trong C++, xem giúp em xem lỗi gì?
    Gửi bởi amazakikudo trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 08-04-2009, 10:21 PM
  5. Bị sai khi sử dụng kiểu Float trong Template class
    Gửi bởi cucxabong trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 14-03-2009, 08:33 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