Cpp Использование кортежа с переменной - PullRequest
0 голосов
/ 14 июля 2020

Итак, я пытался использовать std :: get с переменной для поиска определенной позиции кортежа. Но, к моему удивлению, я не могу получить доступ к любой позиции с помощью кортежа. Вы, ребята, знаете, почему и как решить эту проблему? Мне нужно много контейнеров, которые дают мне разные типы.

Я помещу свой код сюда:

#include <iostream>
#include <tuple>



struct MyStruct
{
    std::tuple<int, float> t;
    int pos;
} myStruct;

int main()
{
    MyStruct* var = new MyStruct();
    var->t = std::make_tuple(1,2.33);
    var->pos = 1;
    
    std::get<1>(var->t); //this works
    std::get<var->pos>(var->t); //this doesn't work but i need to search "dynamically"
}

С уважением!

1 Ответ

1 голос
/ 14 июля 2020

Шаблоны разрешаются во время компиляции, поэтому вы не можете использовать переменную, значение которой неизвестно до времени выполнения, для доступа к кортежу с помощью get. Если вы используете C++17, альтернативой может быть использование чего-то вроде std::vector<std::any> (рекомендуемое чтение: std :: any: Как, когда и почему ).

Вопросы по теме:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...