我試圖刪除這個程序繼承char*
屬性:如何刪除繼承的私人char *屬性? (例如:在析構函數)
在阿
class A {
public :
// Functions, constructors and such
private :
char* attribute;
}
在波黑
#include "A.h"
class B : public A {
public :
B(const char* _attribute, int s) : A(_attribute) {setSpeed(s);}
~B()
private :
int speed;
}
用delete []中析構如此:
B::~B() {
delete [] attribute;
}
但我得到這個錯誤:`字符* A ::屬性」是私人
在A的destuctor(~A()
)我用同樣的‘消滅[]屬性’和它的作品...
因爲我從B創建了具有來自A的繼承屬性的對象並銷燬它,所以我使用了B的析構函數,因爲B中有其他屬性。 –
請參閱'A(_attribute)''''對A?那應該告訴你一些關於誰的析構者應該負責銷燬所說的同樣的東西。我猜測它對A來說並不是私人的,特別是沒有理由。背後可能有原因。所以讓〜A()照顧它。它會被調用一次〜B()完成。 – WhozCraig