Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 24 kết quả

Đề tài: const trong kế thừa | Lỗi: cannot convert from const myclass to & myclass?

  1. #1
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Smile const trong kế thừa | Lỗi: cannot convert from const myclass to & myclass?

    Đang học C++ , gặp một số lỗi mà không biết sửa sao cho nó hiệu quả anh em coi thử có từng gặp qua chưa chỉ giúp .

    1 > class A { myfuntion()* }
    2 > class B : public A { myfuntion()**}
    Bi giờ trong B nếu bình thường ta gọi là A::myfuntion() thì gọi * , nhưng nếu kid viết từ hàm main() thế này :
    void main()
    {A obj; obj.A::myfuntion();}
    thì lại báo lỗi . Giờ nếu kid muốn gọi * thì phải viết như thế nào ?

    Tiếp nữa là về đa năng hóa .
    Ví dụ có hàm như thế này:
    class myClass
    { int x; int test( return 1; ) };
    Nạp chồng thế này :

    ostream& operator<<(ostream& os,const myClass &z);
    { os<<z.x;};

    Thì ko có vấn đề gì ?
    Nhưng nếu thay lại thế này :

    ostream& operator<<(ostream& os,const myClass &z);
    { os<<z.x ; os<<z.test(); };

    thì sẽ báo lỗi là cannot convert from const myclass to & myclass .
    Nếu bỏ const đi thì nó chạy êm ru . Nhưng mà vấn đề là không hiểu vì sao cả ?

    Còn mấy câu nữa quên mất ? Hix . Chừng này trước xem sao ?

  2. #2
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    1 > class A { myfuntion()* }
    2 > class B : public A { myfuntion()**}
    Bi giờ trong B nếu bình thường ta gọi là A::myfuntion() thì gọi * , nhưng nếu kid viết từ hàm main() thế này :
    void main()
    {A obj; obj.A::myfuntion();} //cứ viết bình thường obj.myfuntion()
    thì lại báo lỗi . Giờ nếu kid muốn gọi * thì phải viết như thế nào ?
    Có lẽ đoạn code trên cậu viết nhầm B thành A, nếu đúng thì cậu confirm tớ sẽ đưa ra câu trả lời khác

    class myClass
    { int x; int test( return 1; ) };

    ostream& operator<<(ostream& os,const myClass &z);
    { os<<z.x ; os<<z.test(); };
    const myClass &z là hằng số!
    z.test(); hàm này không dùng được cho z là hằng số
    lý do: hàm ttest() cho phép thay đổi các thuộc tính của z

    cậu chỉ cần đổi prrototype của hàm test() lại 1 chút thành

    int test const ( return 1; )

    Xong, chúc cậu tiếp tục suôn sẻ
    Đã được chỉnh sửa lần cuối bởi nguyentuan2 : 17-07-2007 lúc 11:21 AM.

  3. #3
    Ngày gia nhập
    07 2007
    Nơi ở
    Lang thang không nơi nương tựa
    Bài viết
    18

    Em nghĩ bác viết class A { myfuntion()* } thì mặc định thằng myfuntion() sẽ được đưa vào private , chắc lỗi sẽ phát sinh ở đấy . Bác thử chuyển nó vào public xem.

  4. #4
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    int test const ( return 1; )
    Đúng rồi . Cái đoạn này trong quyển tech ur selt C++ in 21 day cũng có mà kid không hiểu ? Trong 1 số sách tiếng việt cũng không có đoạn này . tại sao const lại để như vậy ? Có tác dụng như thế nào ?

    Còn câu 1 thì phải như thế này :
    1 > class A { myfuntion()* }
    2 > class B : public A { myfuntion()**}
    Bi giờ trong B nếu bình thường ta gọi là A::myfuntion() thì gọi * , nhưng nếu kid viết từ hàm main() thế này :
    void main()
    {B obj; obj.A::myfuntion();} thì lại báo lỗi . Giờ nếu kid muốn gọi * thì phải viết như thế nào ?

    @ ABC : Tớ để ở public đấy , thực ra để ở private hay public thì không khác biệt gì trong vấn đề này .

  5. #5
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    1 > class A { myfuntion()* }
    2 > class B : public A { myfuntion()**}
    Bi giờ trong B nếu bình thường ta gọi là A::myfuntion() thì gọi * , nhưng nếu kid viết từ hàm main() thế này :
    void main()
    {B obj; obj.A::myfuntion();} // cậu ép kiểu và gọi như thế này ((A)obj).myfuntion();

    thì lại báo lỗi . Giờ nếu kid muốn gọi * thì phải viết như thế nào ?
    int test const ( return 1; )
    khai báo như vậy có nghĩa là hàm test() không đựoc phép thay đổi biến thành viên, còn 1 số điều liên quan nữa sẽ nói với cậu sau nếu cậu thích, ngại viết quá
    Đã được chỉnh sửa lần cuối bởi nguyentuan2 : 18-07-2007 lúc 02:56 PM.

  6. #6
    Ngày gia nhập
    12 2006
    Bài viết
    8

    Mặc định const trong kế thừa | Lỗi: cannot convert from const myclass to & myclass?

    Trích dẫn Nguyên bản được gửi bởi kidkid Xem bài viết
    Đúng rồi . Cái đoạn này trong quyển tech ur selt C++ in 21 day cũng có mà kid không hiểu ? Trong 1 số sách tiếng việt cũng không có đoạn này . tại sao const lại để như vậy ? Có tác dụng như thế nào ?

    Còn câu 1 thì phải như thế này :



    @ ABC : Tớ để ở public đấy , thực ra để ở private hay public thì không khác biệt gì trong vấn đề này .
    Cái const là để cho các biến trong hàm không được thay đổi..nhưng trong th này em không biết..nó làm gì@@.với lại nghe thấy bảo cái đa năng hóa toán tử bác Kid đang xài...99,98% là không gặp trong thực tế
    ..còn cái bác Kid khai báo trong hàm main()
    B obj;
    obj.myfuntion(); (Gọi hàm **)là được(giống bác nguyễn tuấn 2 ah)
    Còn gọi hàm * em nghĩ chắc là ko được@@
    Ko biết các bác nghĩ sao

  7. #7
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    ((A)obj).myfuntion();

    Chậc để thử cái câu ép kiểu nghệ thuật này thử coi . Có vẻ hay đấy .
    hàm test() không đựoc phép thay đổi biến thành viên
    Sao trong sách ko có vụ này nhỉ ?
    @anggon . Tớ thấy cái đa năng hóa này hay mà .

  8. #8
    Ngày gia nhập
    12 2006
    Bài viết
    8

    Ý mình là cái đa năng hóa toán tử hay thì hay thật..nó rút gọn thao tác rất nhiều.
    Nhưng thầy tớ là...1 người kinh nghiệm nhiều lắm.Nghe thấy bảo cũng đúng thật có cái đa năng hóa toán tử làm cho chương trình mình đẹp hơn^^.(có cũng được mà ko có cũng chẳng sao---> nguyên văn thầy nói..chứ mình mới tiếp xúc C++ ko dám nói vậy đâu *_*)
    cái vụ const mình nhớ nhiều sách nói lắm sách của thấy PV ất cũng có...chương biến và hàm(phương thức hằng)
    Đã được chỉnh sửa lần cuối bởi anggon : 18-07-2007 lúc 03:42 PM.

  9. #9
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Trích dẫn Nguyên bản được gửi bởi anggon Xem bài viết
    với lại nghe thấy bảo cái đa năng hóa toán tử bác Kid đang xài...99,98% là không gặp trong thực tế
    Thế chắc người ta nói nhảm nhí ấy mà. Nhiều trường hợp chồng toán tử là rất cần thiết chứ không chỉ là để cho code trong đẹp hơn đâu.

  10. #10
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    ok đồng ý với bác vinhie47 nhà ta .
    Mà tiện đây hỏi ý anh em luôn , trong C++ những phần nào được coi là hay nhất .
    Ứng viên : Template , Thừa Kế , Đa Hình , Đa Năng Hóa

    Tất nhiên mỗi thằng có mỗi công dụng nhưng mà thằng nào hay được dùng nhất .

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

  1. Lập trình C++0x const: ý nghĩa của const trong khai báo function
    Gửi bởi quano1 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 06-08-2013, 07:24 AM
  2. con trỏ const trong c++ lỗi: cannot convert 'this' pointer from 'const newRectangle' to 'newRectangle &'?
    Gửi bởi cautrucdulieu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 02-10-2012, 11:45 PM
  3. lỗi cannot convert `const char*' to `const WCHAR*' for argument khi dùng autoit với c++
    Gửi bởi morongtraitim88 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: 03-06-2011, 08:54 PM
  4. const A* const method(const A* const) const;//const thứ 2
    Gửi bởi david8xvn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 18
    Bài viết cuối: 23-09-2010, 12:36 AM
  5. [VC] Cannot convert parameter 1 from 'const char [23]' to 'const wchar_t *'
    Gửi bởi lychailon trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 09-12-2006, 11:22 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