如何制作模板结构的矢量

How to Make a vector of template structs

本文关键字:结构 何制作      更新时间:2023-10-16

可能重复:
c++模板问题

大家好:

我一直在努力做以下事情:

template <typename T>
  struct test {
  T* value;
  test(int num_of_elements) { value = new T[num_of_elements] };
  }
  std::vector<test *> fields_;

即,我想制作一个指向一组具有不同类型值的测试结构的指针向量?

我该怎么做?

感谢

Ross

您可以使用类似Boost::any的东西。文档中的一个示例几乎准确地说明了您的用例(至少,正如您迄今为止所描述的(:

struct property
{
    property();
    property(const std::string &, const boost::any &);
    std::string name;
    boost::any value;
};
typedef std::list<property> properties;

我不确定将指针指向测试模板意味着什么(与测试类相比(。但是,如果你确定你想要,你可以试试:

  struct baseTest {
    virtual GetNumberOfElems() = 0;
  };
  template <typename T>
  struct test : public baseTest {
    std::size_t n;
    T* value;
    test(int num_of_elements) { value = new T[n = num_of_elements] };
    int GetNumberOfElems() { return n; } 
  }
  std::vector<baseTest *> fields_;