C++设计问题
简化示例
template <typename T>
class Thing
{
T value;
public:
T get() { return value; }
};
template <typename T>
class Box
{
Thing<T> thing;
public:
T get() { return thing.get(); }
};
现在我需要存储不同类型的 Box,例如
Box<string>,
Box<matrix>,
etc
(其中所有 T 类都不相关)在容器中。显然这是不可能的,因为每种类型的 Box 的 T 都不相同。我无法创建抽象父类(super class),因为 T 的返回类型有所不同,并且如果我以某种方式提供替代实现,则 get() 参数中没有任何内容可以区分要使用哪个。
如何解决这个问题才是合理的方法。当然,我可以在抽象类中添加多个 get(),但这看起来不太像 C++。在某些时候我将不得不检查 isThisAString、isThisAMatrix,问题是最合理的设计是什么,假设我将来可能需要添加专门的 Box 子类,但仍然维护一组类似于 get() 的方法,这些方法基于模板参数。
最佳答案
关于具有不同方法返回类型的 C++ 模板类设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22992604/