У меня есть функция, которая возвращает несколько объектов внутри кортежа.
return std::tuple<std::vector<float>, class1, class2> (vec, instance1, instance2);
Я передаю этот кортеж в другую функцию с подписью:
void func(std::tuple<std::vector<float>, class1, class2> & data);
Я хочу изменить class1 , но не любые другие объекты в кортеже.Я попытался вернуть
return std::tuple<const std::vector<float>, class1, const class2> (vec, instance1, instance2);
и изменить подпись.
void func(std::tuple<const std::vector<float>, class1, const class2> & data);
- Очевидно, что подпись
const std::tuple<> & data
не позволит мне изменить любой из объектовв кортеже.Будет ли подпись, как в 4-й строке кода, только мешать этой конкретной функции изменять те объекты в ссылке, которую я указываю как const
? - В качестве альтернативы, возвращает кортеж с
const
объектами действительнымиили лучше, чтобы не-1021 * ссылка на этот кортеж могла изменять только не-1022 * объекты внутри?Последнее решение, если оно допустимо, было бы лучше, так как я должен передавать эти данные нескольким другим функциям в классе, и это более постоянное, общее решение вместо того, чтобы быть осторожным с сигнатурами функций.