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

Đề tài: xây dựng hàm trừ hai đa thức bị lỗi:no match for...

  1. #1
    Ngày gia nhập
    10 2011
    Bài viết
    1

    Mặc định xây dựng hàm trừ hai đa thức bị lỗi:no match for...

    mình đang làm bài xây dựng class đa thức,hàm cộng thì mình làm chạy tốt ruì,nhưng khi mình xây dựng hàm trừ thì bị lỗi
    đây là hàm để đổi dấu đa thức:
    Code:
    class DATHUC
    {
    	private:
    
    	double*p;//De luu he so da thuc
    	int*q;//De luu so mu cua moi hang tu trong da thuc
    	int n;//So hang tu trong da thuc
    
    	public:	
    	friend DATHUC operator+(DATHUC &,DATHUC &);
    	friend DATHUC operator-(DATHUC ,DATHUC );
    	DATHUC operator-();//overloading toan tu -,dung de doi dau da thuc
    ...
    };
    Code:
    DATHUC DATHUC::operator-()
    {
    	DATHUC u(*this);
    	for(int i=0;i<u.n;i++){
    		u.p[i]=-(this->p[i]);
    		u.q[i]=this->q[i];
    	}	
    	return u;
    }
    đây là hàm cộng hai đa thức:
    Code:
    DATHUC operator+(DATHUC &a,DATHUC &b)
    {
    	int t=a.n+b.n,k=0;
    	DATHUC h(t);
    	for(int i=0;i<a.n;i++)
    	{	
    		h.p[i]=a.p[i];
    		h.q[i]=a.q[i];
    	}
    	for(int j=a.n;j<t;j++,k++)
    	{
    		h.p[j]=b.p[k];
    		h.q[j]=b.q[k];
    	}
    	h.rutgon();
    	return h;
    }
    Đây là hàm trừ của mình:
    Code:
    DATHUC operator-(DATHUC a,DATHUC b)
    {
    	return(a+(-b));
    }
    khi mình build thì bị lỗi:
    error: no match for 'operator+' in 'a + DATHUC::operator-()()'
    mình k hiểu lỗi này và cách sửa như thế nào,mong các bạn giúp đỡ,tks nhiều ạ!

  2. #2
    Ngày gia nhập
    03 2012
    Bài viết
    27

    C++ Code:
    1. DATHUC operator-(DATHUC a,DATHUC b)//Chỗ này là DATHUC DATHUC::operator-... chứ
    2. {
    3.     return(a+(-b));
    4. }

    Y!M: doxuanthangvn
    Skype: doxuanthangvnn
    Email: doxuanthang@hotmail.com

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    1

    mình dùng hàm friend mà bạn!

  4. #4
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    C++ Code:
    1. class DATHUC
    2. {
    3. private:
    4.     double*p;//De luu he so da thuc
    5.     int*q;//De luu so mu cua moi hang tu trong da thuc
    6.     int n;//So hang tu trong da thuc
    7.  
    8. public:
    9.     friend DATHUC operator+(const DATHUC& , const DATHUC &);
    10.     friend DATHUC operator-(const DATHUC& , const DATHUC &);
    11.     DATHUC operator-();//overloading toan tu -,dung de doi dau da thuc
    12. ...
    13. };
    14.  
    15. DATHUC operator+(const DATHUC & a, const DATHUC & b)
    16. {
    17.     int t = a.n + b.n, k = 0;
    18.     DATHUC h(t);
    19.     for(int i = 0; i < a.n; ++i) { 
    20.         h.p[i] = a.p[i];
    21.         h.q[i] = a.q[i];
    22.     }
    23.     for(int j = a.n; j < t; ++j, ++k) {
    24.         h.p[j] = b.p[k];
    25.         h.q[j] = b.q[k];
    26.     }
    27.     h.rutgon();
    28.     return h;
    29. }
    30.  
    31. DATHUC operator-(const DATHUC & a, const DATHUC & b)
    32. {
    33.     return (a + (-b));
    34. }
    35.  
    36. DATHUC DATHUC::operator-()
    37. {
    38.     DATHUC u(*this);
    39.     for(int i = 0; i < u.n; ++i){
    40.         u.p[i] = - p[i]);
    41.         u.q[i] = q[i];
    42.     }  
    43.     return u;
    44. }
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  5. #5
    Ngày gia nhập
    10 2011
    Bài viết
    1

    bạn có thể giải thích cho mình rõ hơn về từ khóa const dùng trong đây k?mình nghĩ là nếu dùng const thì 2 obj a và b sẽ k được thay đổi giá trị,nhưng mình đâu có thay đổi giá trị đâu? và bạn cho mình hỏi luôn là sao dựa vào lỗi này:no match for 'operator+' in 'a + DATHUC::operator-()()' mà bạn lại biết mà thêm vào const?tks bạn nhiều!

  6. #6
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    Mặc định xây dựng hàm trừ hai đa thức bị lỗi:no match for...

    Trích dẫn Nguyên bản được gửi bởi huynguyen023 Xem bài viết
    bạn có thể giải thích cho mình rõ hơn về từ khóa const dùng trong đây k?mình nghĩ là nếu dùng const thì 2 obj a và b sẽ k được thay đổi giá trị,nhưng mình đâu có thay đổi giá trị đâu? và bạn cho mình hỏi luôn là sao dựa vào lỗi này:no match for 'operator+' in 'a + DATHUC::operator-()()' mà bạn lại biết mà thêm vào const?tks bạn nhiều!
    Bạn xem ở đây: __http://en.wikipedia.org/wiki/Operators_in_C_and_C++ Chỗ "Prototype examples", nếu muốn nạp chồng toán tử nào, thì nên làm theo "nguyên mẫu" hàm có sẵn, như vậy sẽ tránh được những lỗi như vậy. Do kiến thức tôi còn ít nên vẫn chưa giải thích được, mong bạn thông cảm.
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  7. #7
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Trích dẫn Nguyên bản được gửi bởi huynguyen023 Xem bài viết
    bạn có thể giải thích cho mình rõ hơn về từ khóa const dùng trong đây k?mình nghĩ là nếu dùng const thì 2 obj a và b sẽ k được thay đổi giá trị,nhưng mình đâu có thay đổi giá trị đâu? và bạn cho mình hỏi luôn là sao dựa vào lỗi này:no match for 'operator+' in 'a + DATHUC::operator-()()' mà bạn lại biết mà thêm vào const?tks bạn nhiều!
    - Sử dụng const với những tham số không cần thay đổi là việc nên làm với các lập trình viên C/C++
    - Với const thì hàm có thể sử dụng được với cả tham số const lẫn tham số không phải const
    - Câu lệnh:
    C++ Code:
    1.     return(a+(-b));

    Tương đương:
    C++ Code:
    1. return operator+(a, -b);
    Ở đây "-b" là một rvalue, không thể thay đổi được. Vì hàm của bạn chỉ nhận các tham số không phải const nên nó không thể nhận -b => báo lỗi không tìm thấy hàm thích hợp.

  8. #8
    Ngày gia nhập
    10 2011
    Bài viết
    1

    tks các bạn nhiều,mình hiểu rồi!

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

  1. Trả lời: 4
    Bài viết cuối: 20-02-2013, 10:41 PM
  2. Lỗi "Column count doesn't match value count at row 1" sửa thế nào?
    Gửi bởi biencute trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 2
    Bài viết cuối: 22-12-2012, 11:00 PM
  3. lỗi "Column name or number of supplied values does not match table definition."
    Gửi bởi biencute trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 05-06-2012, 08:19 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