[类型数组?

问题描述 投票:1回答:2

我有几个结构,我想创建它们的数组,以便可以将其成员用作模板的参数,例如types = {int, float}; multiply<types[i]>();。可以通过重载来完成,但是我有很多功能,所以这不是一种方法。据我所知,我们只能将类型存储为指针(因此我实际上必须取消引用它:multiply<*types[i]>();),但是在这里我不再理解,因为要创建一个指针,我必须知道它所指向的变量的类型,什么是类的类型?我以为“拧紧它,我将使用自动”,但是似乎指向不同类的指针具有不同的类型,因此我必须删除它们的类型以将它们存储在一个公共数组中,依此类推,现在有这个:

auto types = {std::make_shared<void>(Student), std::make_shared<void>(Citizen)};

[它说StudentCitizen没有引用值。

c++ pointers types
2个回答
1
投票

C ++中方便的类型内置数组是std::tuple<Types...>

要访问std :: tuple中的第i种类型,请使用std::tuple<Types...>

例如:

std::tuple_element_t<i, your_tuple>

类型在编译时只是“那里”,因此所有索引都需要在编译时,并将它们存储在类型信息(此处为std::tuple_element_t<i, your_tuple>中的可变类型)中,而不是存储在变量中。 >

您可以使用帮助程序类型来减少此冗长的内容:

using types = std::tuple<int, float>;
multiply<std::tuple_element_t<i, your_tuple>>();

0
投票

在C ++中,数组包含所有相同类型

© www.soinside.com 2019 - 2024. All rights reserved.