Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 18 kết quả

Đề tài: error C2679: binary '<<' : no operator defined which takes a right-hand operand

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

    Mặc định error C2679: binary '<<' : no operator defined which takes a right-hand operand

    Đây là code:
    File Card.h:
    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3. class Card
    4. {
    5.     friend ostream& operator<<(ostream&, const Card&); //Chỗ này quan trọng nè
    6. public:
    7.     enum Rank { TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE,
    8.                 TEN, JACK, QUEEN, KING, ACE};
    9.     enum Suit { CLUB, DIAMOND, HEART, SPADE };
    10.     Card(Rank=ACE,Suit=SPADE);
    11.     Card(int,int);
    12.     Card(const Card&);
    13.     ~Card();
    14.     Rank rank() const;
    15.     Suit suit() const;
    16.     bool isFaceCard() const;
    17.     int count() const;
    18.     string toString() const;
    19.     string abbr() const;
    20.     bool operator<(const Card&) const;
    21.     bool operator>(const Card&) const;
    22.     bool operator<=(const Card&) const;
    23.     bool operator>=(const Card&) const;
    24.     bool operator==(const Card&) const;
    25.     bool operator!=(const Card&) const;
    26. private:
    27.     Rank _rank;
    28.     Suit _suit;
    29.     static int _count[15][4];
    30. };
    Đây là file Card.cpp (chỉ trích dẫn vùng lỗi)
    C++ Code:
    1. #include "Card.h"
    2. ostream& operator<<(ostream& ostr, const Card& card)
    3. {
    4.     return ostr << card.toString();
    5. }
    ...

    Nguyên văn lỗi C2679:
    error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
    Đang tìm hiểu nguyên nhân tại sao có cái lỗi này, bạn nào biết cách sửa lỗi sửa giùm mình với, giải thích giùm mình luôn nha. Cảm ơn trước nà
    Đã được chỉnh sửa lần cuối bởi hunter_hikaru : 18-02-2009 lúc 03:25 PM.

  2. #2
    Ngày gia nhập
    10 2008
    Nơi ở
    sài gòn
    Bài viết
    422

    cậu nên up Project lên thì mới giúp được

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

    Ồ chỉ là 2 file .h và .cpp của lớp Card đó thôi, mình chỉ build thử để hiểu code thôi. Bạn đã yêu cầu thì mình cũng up lên .
    Attached Files Attached Files

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    C++ Code:
    1. #include "Card.h"
    2. ostream& operator<<(ostream& ostr, const Card& card)
    3. {
    4.      ostr << card.toString();
    5.      return ostr;
    6. }

    Cậu thử lại xem
    What you see is never what you get...

  5. #5
    Ngày gia nhập
    03 2008
    Bài viết
    25

    Cảm ơn void main(). Mình đã thử lại nhưng nó vẫn báo lỗi trên.

  6. #6
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Mặc định error C2679: binary '<<' : no operator defined which takes a right-hand operand

    C++ Code:
    1. #include "Card.h"
    2. #include <string>
    3. ostream& operator<<(ostream& ostr, const Card& card)
    4. {
    5.     return ostr << card.toString();
    6. }

    Cậu xem được chưa
    What you see is never what you get...

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

    bạn hikaru thêm dòng #include<string> vào file Card.h là ok
    code ra gió bão

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

    Trích dẫn Nguyên bản được gửi bởi void main () Xem bài viết
    C++ Code:
    1. #include "Card.h"
    2. #include <string>
    3. ostream& operator<<(ostream& ostr, const Card& card)
    4. {
    5.     return ostr << card.toString();
    6. }

    Cậu xem được chưa
    bạn để hàm của bạn là hàm friend là được.
    thân,
    friend ostream& operator<<(ostream& ostr, const Card& card)

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

    No, no, khai báo bên ngoài class ko được phép thêm friend vào.
    code ra gió bão

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

    error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
    Nếu không có #include <string> không thể có lỗi này được ! Cậu có chắc là code đó không ?

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

  1. Lỗi 2005 link error - already defined in trong C++/CLI
    Gửi bởi gachoai trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 0
    Bài viết cuối: 25-09-2013, 12:33 PM
  2. Lỗi với cin trong khi nhập ở class (error C2679: binary '>>'...)
    Gửi bởi kuhoang0512 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 9
    Bài viết cuối: 04-11-2011, 11:57 AM
  3. ADO.NET bị lỗi Syntax error (missing operator) in query expression '* fromlop'...giúp em với
    Gửi bởi phieuhung trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 26-04-2011, 11:29 AM
  4. Array Kiểu VECTOR error C2679: binary '<<' : no operator found
    Gửi bởi nndung179 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: 18-11-2010, 02:58 PM
  5. [VC++ 2005] Error C2679 ! ?
    Gửi bởi dellogvn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 07-01-2007, 07:34 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