Đây là mã của tôi -Tại sao chuyển đổi giữa xuất phát * thành cơ sở * không thành công với kế thừa riêng?
#include<iostream>
using namespace std;
class base
{
public:
void sid()
{
}
};
class derived : private base
{
public:
void sid()
{
}
};
int main()
{
base * ptr;
ptr = new derived; // error: 'base' is an inaccessible base of 'derived'
ptr->sid();
return 0;
}
Điều này tạo ra lỗi thời gian biên dịch.
error: 'base' is an inaccessible base of 'derived'
Vì trình biên dịch sẽ thử gọi lớp cơ sở sid()
tại sao tôi gặp lỗi này? Ai đó có thể giải thích điều này.
Bạn không khai báo phương thức 'virtual'. Lỗi nào là bạn đang nhận được chính xác? – Dirk
Ở dạng hiện tại, nó không liên quan gì đến hàm 'sid()'. Bạn đang sử dụng thừa kế riêng do đó việc chuyển đổi từ 'origin *' sang 'base *' là không thành công. Có phải đó là những gì bạn đang yêu cầu hoặc nó là một cái gì đó để làm với phương pháp 'sid()'? – Naveen
có thể trùng lặp của [Lớp được bảo vệ có nguồn gốc] (http://stackoverflow.com/questions/433965/protected-derived-class) – kennytm