【问题标题】:C++ generic type of generic type [duplicate]泛型类型的C ++泛型类型[重复]
【发布时间】:2019-06-04 20:33:57
【问题描述】:

我正在尝试基于我已经构建的通用向量构建通用矩阵。我想要一个向量向量(每个内部向量代表一行)。由于某种原因,这不起作用:

template <typename T>
class matrix : vector<vector<T>>{...}

我收到此错误:

error: 'class vector<T>' is not a valid type for a template non-type parameter

我尝试查看模板模板,但无法真正理解如何使它们工作。任何帮助将非常感激。谢谢!

【问题讨论】:

  • 无法重现:link,请提供显示此错误的最小可验证示例。

标签: c++ templates template-templates


【解决方案1】:

这应该适合你:

#include <vector>

template <typename T>
class matrix : public std::vector<std::vector<T>>
{
};

int main()
{
    matrix<int> m;

    m.push_back({});
    m[0].push_back(0);
    m[0].push_back(1);
    m[0].push_back(2);

    m.push_back({});
    m[1].push_back(3);
    m[1].push_back(4);
    m[1].push_back(5);

    m.push_back({});
    m[2].push_back(6);
    m[2].push_back(7);
    m[2].push_back(8);

    return 0;
}

但我建议调查“A proper way to create a matrix in c++”主题,该主题看起来非常接近您想要实现的内容。

【讨论】:

  • 请将 main 的返回类型从 void 更改为 int。否则,编译失败。在 Wandbox 上尝试您的代码。 wandbox.org/permlink/w1sJ8gxwZPPqaQMS
  • return 0; 丢失。
  • @KunalPuri,已修复。谢谢!
猜你喜欢
  • 2011-08-19
  • 2018-06-12
  • 1970-01-01
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多