-6
我正在解決一些基本的遺傳問題。我遇到了一些我不瞭解邏輯的東西。如果我從Base類繼承派生類作爲私有類,我是否可以訪問Base類的公共成員。這裏是我的代碼,與公共,私人和受保護區別
#include <iostream>
struct Shape
{
virtual void print()
{
std::cout << "SHAPE" << std::endl;
}
virtual ~Shape() {}
};
struct Box : private Shape
{
virtual void print()
{
std::cout << "BOX" << std::endl;
}
};
int main(int argc, char** argv)
{
Shape* s = new Box; //illformed ? can't access the public members of the base.
s->print();
delete s;
return 0;
}
問問你的老師,看書 –
你的C++編譯器壞了。 gcc 7.1.1正確地發佈了一個診斷,並且無法編譯代碼:'錯誤:'Shape'是'Box''的一個不可訪問的基地 –
所以它的意思是,如果我繼承爲Private,形狀不可訪問框。是?類似於我們無法訪問課堂外的私人成員。 – Bob11