gpt4 book ai didi

c++ - 如何在 C++ 中正确返回模板化对象?

转载 作者:行者123 更新时间:2023-11-30 01:54:33 25 4
gpt4 key购买 nike

在此代码中 create_matrix返回 Matrix<int, 2, 3>输入:

#include <array>
#include <iostream>

using namespace std;

template <class T, size_t ROW, size_t COL>
using Matrix = array<array<T, COL>, ROW>;

Matrix<int, 2, 3> create_matrix(int x, int y){
Matrix<int, 2, 3> arr;
arr[0][0] = 42;
return arr;
}

int main(int argc, char *argv[])
{
auto arr = create_matrix(2,3);
cout << arr[0][0];
return 0;
}

是否可以返回Matrix<int, x, y>类型?

最佳答案

std::array 的模板参数必须在编译时已知(字面值、const 值或 constexpr 值,在编译时已知)

所以在这种情况下,不可能返回一个在运行时传入 x 和 y 的矩阵。

要获得该类型的功能,您可能需要将 std::array 替换为 std::vector 或某种类似的动态数组类型的对象,即使这样您也必须重构代码以不将值作为模板参数.

关于c++ - 如何在 C++ 中正确返回模板化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com