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

Đề tài: Gọi hàm của lớp cơ sở trong thừa kế public.

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

    Mặc định Gọi hàm của lớp cơ sở trong thừa kế public.

    Chào các bạn.
    Hôm nay mình có đọc qua cuốn C++ lập trình hướng đối tượng của thầy Phạm Văn Ất.
    Mình có viết một truơng trình gồm có 2 lớp là DIEM và lớp HINH_TRON, trong đó lớp HINH_TRON thừa kết từ lớp DIEM. Mình có nghĩ là do sự thừa kế là public nên các phuơng thức của lớp cơ sở DIEM hoàn toàn là phuơng thức public của lớp HINH_TRON do vậy có thể truy nhập từ bên ngoài đúng không ạ. Tuy nhiên khi viết truơng trình thì nó lại báo lỗi, mính suy nghĩ mãi mà không tìm ra tại sao. Vậy mình post bài của mình lên đây mong các bạn giúp mình sửa và giải thích kỹ hộ mình, mình cám ơn các bạn nhé.
    Code:
    // Author : Nguyen Nhu Toan.
    // Purpose : Vi du dau tien ve inheritance.
    #include <iostream>
    using namespace std;
    class DIEM
    {
    	private:
    		double x,y;
    	public:
    		DIEM()
    		{
    			x=0;
    			y=0;
    		}		
    		DIEM(double x1 , double y1)
    		{
    			x=x1;
    			y=y1;
    		}
    		void in()
    		{
    			cout << "x=" << x << "y=" << y << endl;
    		}
    };
    class HINH_TRON : public DIEM
    {
    	private:
    		double r;
    	public:
    		HINH_TRON()
    		{
    			r=0.0;
    		}
    		HINH_TRON(double x1 , double y1 , double r1) : DIEM(x1 , y1)
    		{
    			r=r1;
    		}
    		double getR()
    		{
    			return r;
    		}
    		
    };
    int main()
    {
    	HINH_TRON h(2.5 , 3.5 , 8.0);
    	cout << "Hinh tron co tam: " << h.in() << endl;
    	cout << "Co ban kinh: " << getR() << endl;
    	system("pause");
    	return 0;
    }
    lazy code

  2. #2
    Ngày gia nhập
    05 2011
    Bài viết
    20

    Bạn thử h.getR() xem :P :P

  3. #3
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    sửa getR() thành h.getR()

    sửa
    cout << "Hinh tron co tam: " << h.in() << endl;
    thành
    cout << "Hinh tron co tam: " ; h.in();


    nếu muốn truy xuất các thành phần của lớp cơ sở mà bị trùng tên với lớp dẫn xuất thì ghi là <tên đối tượng>.<tên lớp cơ sở>::<tên thành phần>; ví dụ h.DIEM::in();

  4. #4
    Ngày gia nhập
    01 2011
    Bài viết
    30

    Trích dẫn Nguyên bản được gửi bởi pkthanh92 Xem bài viết
    sửa getR() thành h.getR()

    sửa
    cout << "Hinh tron co tam: " << h.in() << endl;
    thành
    cout << "Hinh tron co tam: " ; h.in();


    nếu muốn truy xuất các thành phần của lớp cơ sở mà bị trùng tên với lớp dẫn xuất thì ghi là <tên đối tượng>.<tên lớp cơ sở>::<tên thành phần>; ví dụ h.DIEM::in();
    Ừm, he cám ơn các bạn nhiều lắm.
    Mình sửa và đã chạy được rùi he, lần sau có vấn đề gì mình lại hỏi tiếp có gì nhờ các bạn tiếp he he
    lazy code

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

  1. lỗi: The modifier 'public' is not valid for this item trong lập trình WCF
    Gửi bởi tanthienvuong trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 6
    Bài viết cuối: 12-11-2013, 03:46 PM
  2. public trong C# dùng để làm gì và sử dụng nó như thế nào???
    Gửi bởi copper123 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 23-10-2012, 07:25 PM
  3. sự khác nhau giữa public va internal trong C#?
    Gửi bởi lenhatnguyen trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 20-09-2012, 08:33 PM
  4. Sử dụng private và public trong class như thế nào?
    Gửi bởi newbie.blind trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 01-11-2010, 11:41 AM
  5. public static readonly trong C# có nghĩa là gì?
    Gửi bởi caovietthuong trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 10-07-2010, 11:22 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