[英]polymorphism and protected inheritance issue
我有這段代碼,並且在tp = new asp_table
,它不允許我編譯說我沒有訪問權限。 我不明白為什么? 我試圖建立一個從基類到派生類的指針,但是它不允許我這樣做。 我想知道為什么。
class table {
int size;
int priority;
public:
table(int s=0,int p=0):size(s),priority(p){ }
virtual void print(){}
};
class stud_table:public table {
char * name;
int gr;
public:
void print() {cout<<"students table"<<endl;}
~stud_table() {delete []name;}
};
class asp_table:protected table {
char* thesis;
};
int main() {
stud_table st;
table * tp = &st;
tp = new asp_table;
stud_table * stp = &st;
cout<<"Program"<<endl;
return 0;
}
錯誤消息說明了一切:
無法將'asp_table'強制轉換為其受保護的基類'table'
protected
繼承僅意味着asp_table
及其派生類知道該繼承。 因此,在類或其派生類之外不可能tp = new asp_table
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.