我想要設計類似於以下的類結構。主要想法是必須在需要時更新基類指針。同樣,我們可以在子類上進行一些不相關的操作。如何讓子類包含指向基類的指針
我想知道如何重新設計這個具有多態性和封裝。這可能是一個很noob問題,但任何幫助表示讚賞。
我不關心被剪切的內存泄漏,因爲在實際代碼中使用了這些代碼,因此正在使用刪除來避免任何問題。
我想問的是,有沒有類似於下面的類結構更好的方法,而不是Child1調用getBase來獲取基類指針,它可以擴展基類,其中基類可能已經已經實例化,child1只是封裝並提供一些功能。
class Base {
private:
int a;
char b;
public:
Base(int argA, char argB): a(argA), b(argB) {
}
char getChar() {
return b;
}
int getInt() {
return a;
}
void setChar(char foo) {
b = foo;
}
void setInt(int foo) {
a = foo;
}
};
class Child1 {
private:
Base *base;
public:
Child1(PhysicalBlock *argBase) : base(argBase) {
}
Base *getBase() {
return base;
}
uint64_t getSum() {
int a = base->getInt();
char b = base->getChar();
return a + (int)b;
}
};
class Child2 {
private:
Base * base;
double c;
public:
Child2(Base * argBase) : base(argBase), c(0.0) {
}
Base *getBase() {
return base;
}
double getDivision() {
int a = base->getInt();
char b = base->getChar();
return (double) ((double)a + (double)b)/c;
}
};
int bla(Child1 * c1)
{
Base * b1 = c1->getBase();
b1->setInt(55);
b1->setChar('z');
return c1->getSum();
}
int main()
{
Base * b1 = new Base(1, 'a');
Base * b2 = new Base(2, 'b');
Child1 * child1 = new Child1(b1);
Child2 * child2 = new Child2(b2);
bla(child1);
return 0;
}
你爲什麼給我們展示'bla()'?哦,也許是這個'foo(child1);' - >'bla(child1);'?我也不明白你的問題。我的意思是我不認爲你在問你的程序的內存泄漏... – gsamaras
你真的*試圖實現什麼?這聽起來有點像[XY問題](http://xyproblem.info)。 –
@gsamaras已添加編輯。是的,這是一個錯字。我指的是bla(child1) –