我试着弄清楚Stack和SubClasses之间的正确关系对于这种实现是如何看了一会儿:
struct Animal {
virtual void feed() = 0;
};
struct Dog : Animal {
void feed() {
cout << "bark";
}
};
struct Cat : Animal {
void feed() {
cout << "meow";
}
};
struct AnimalStack {
Animal *array[10];
//rest of implementation for the stack
};
int main() {
//create Stack
//create new Animal objects and push them to the AnimalStack
}
我认为Stack和Animal之间的关系是一个关联关系,但我也看到有人争论类似问题的依赖关系。
答案 0 :(得分:0)
这是聚合的一个例子。 https://en.wikipedia.org/wiki/Object_composition#Aggregation
依赖关系的参数是弱的,并不表示Stack存储(指向)动物。它没有以有意义的方式描述代码。
Animal 具有子类的事实是模型的一个独立部分,并不会更改Stack - &gt;动物关系。