我正在尝试在 C++ 中实现某种对象组合。这个想法是创建一组所有数据结构,这些数据结构可以通过组合只知道基本数据结构操作的抽象类来创建。例如,可以通过将 pusher 与 popper 组合来创建堆栈,通过将 queuer 与 popper 组合来创建队列等。
问题是,尽管 Pusher、Popper 和 Queuer 只是作为抽象类,并且它们永远不会被实例化,它们必须知道数据结构内部是如何存储数据的。
目标是拥有不可知的抽象类,这些抽象类仅用于将方法定义传递给具体的数据结构类,方式如下:
class Pusher {
public:
void Push(int value) {
// Simulates internal logic of pushing a value.
elements.push_back(value);
}
}
class Popper {
public:
int Pop() {
// Simulates internal logic of popping a value.
int popped_value = elements.back();
elements.pop_back();
return popped_value;
}
}
class Stack: public Pusher, public Popper {
private:
vector<int> elements;
}
你可以看到,尽管 Pusher 和 Popper 不知道元素,但 Stack 知道,这才是最重要的。但是,此代码无效且无法编译。我怎样才能写出有效的东西来达到同样的效果?