如何制作模板结构向量

发布于 2024-10-31 09:39:08 字数 452 浏览 0 评论 0原文

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

大家好:

我一直在尝试执行以下操作:

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

  std::vector<test *> fields_;

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

我该怎么做?

谢谢罗斯

Possible Duplicate:
c++ template problem

Hi Everyone:

I'm stuck trying to do the following:

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

  std::vector<test *> fields_;

i.e. I want to make a vector of pointers to a set of test structs with different types for value?

How do I do this?

Thanks

Ross

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

锦上情书 2024-11-07 09:39:08

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

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

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

typedef std::list<property> properties;

You could use something like Boost::any. An example from the documentation illustrates your use case almost exactly (at least, as you've described so far):

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

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

typedef std::list<property> properties;
撩心不撩汉 2024-11-07 09:39:08

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

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

I'm not sure what it means to make a pointer to a test template (contrast with test class). But, if you are sure you want that, you could try:

  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_;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文