【问题标题】:Template Inherited Classes模板继承类
【发布时间】:2016-02-03 15:49:26
【问题描述】:

我正在尝试为可以在集合中表示的通用数据(POD 或对象)创建一个包装类。基本上,我有大量不同类型的数据,我需要添加其他数据(如读/写时间),但我希望能够在 STL 容器中表示这些数据。粗略的例子:

class Base
{
    int lastUpdate;
    void SomeMember();
}

template<class T>
class Object : public Base
{
    T data;
}

int main()
{
    std::vector<Base*> data;
    data.push_back(new Object<int>());
    data.push_back(new Object<OtherClass>());
}

上面这样的可能吗?

【问题讨论】:

  • 你尝试编译了吗?
  • 它对您不起作用还是您遇到了什么问题?另外,不要忘记使用智能指针(例如,std::vector&lt;std::unique_ptr&lt;Base&gt;&gt;)。
  • Something like the above is indeed possible。你为什么不试试呢?
  • 在内存泄漏之外,这很好。否则,不清楚您实际上在问什么。
  • 不清楚你在问什么,但我觉得从长远来看,Object 类是完全没有必要的。

标签: c++ templates inheritance polymorphism


【解决方案1】:

这绝对是可能的。你的方法看起来也不错。您基本上定义了一个公共基类和一个模板派生类(如您的代码示例所示)。

您的示例中唯一缺少的是类定义后的分号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-23
    • 2018-01-18
    • 2011-03-22
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多