我試圖讓下面的代碼工作,但我找不到足夠好的文檔說明C++如何處理公有與私有繼承以允許我做我想做的事情。如果有人能解釋爲什麼我不能使用私有繼承訪問Parent::setSize(int)
或Parent::size
或使用公共繼承訪問Parent::size
。爲了解決這個問題,我需要在Parent中使用getSize()
和setSize()
方法嗎?調用Parent方法並訪問父類中的私有變量?
class Parent {
private:
int size;
public:
void setSize(int s);
};
void Parent::setSize(int s) {
size = s;
}
class Child : private Parent {
private:
int c;
public:
void print();
};
void Child::print() {
cout << size << endl;
}
int main() {
Child child;
child.setSize(4);
child.print();
return 0;
}
是的,和私有成員不繼承,這就是爲什麼你不能訪問 – 2010-10-24 17:48:17
你描述什麼是錯的基類的私有成員,但沒有提供任何解決方案! – 2010-10-24 17:50:17
@Ned Batchelder:這就是爲什麼我投你的答案。 :)我不確定OP究竟需要什麼,因爲否則正常的公共繼承會正常工作。 – casablanca 2010-10-24 17:53:05