我在 C++ 中使用了类型删除模式,即我用抽象类隐藏了一个模板类
class Base{
virtual ~Base(){}
//pure virtual methods...
};
template<typename T>
class Derived : Base{
Derived<T>(){}
~Derived(){}
//public methods...
private :
vector<T> datas;
};
问题:如果我想检索或修改数据,我必须使用基类
如何定义访问器 getDatas() 和 SetDatas(vector datas) ?
最佳答案
您正在尝试实现类型删除,然后询问如何让客户端对您正在删除的类型进行操作。您在此处部署的模式仅适用于 Base
的派生类具有可以在不引用它们存储的具体数据类型的情况下调用的共同操作。如果没有这样的通用操作,并且客户端通过 Base
接口(interface)执行的唯一语义上有用的事情涉及使用派生类的具体类型,那么您将无法使用此设计。
关于c++ - 类型删除和访问器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585278/