如何制作模板结构的矢量

时间:2011-04-11 20:33:17

标签: c++ templates vector

  

可能重复:
  c++ template problem

大家好:

我一直试图做以下事情:

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

  std::vector<test *> fields_;

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

我该怎么做?

由于

罗斯

2 个答案:

答案 0 :(得分:1)

我不确定制作指向测试模板的指针意味着什么(与测试类形成对比)。但是,如果您确定要这样,可以尝试:

  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_;

答案 1 :(得分:1)

您可以使用Boost::any之类的内容。文档中的一个示例几乎完全说明了您的用例(至少,正如您到目前为止所描述的那样):

struct property
{
    property();
    property(const std::string &, const boost::any &);

    std::string name;
    boost::any value;
};

typedef std::list<property> properties;