Как обобщить вызов функции для доступа к шаблонной переменной с несколькими типами - PullRequest
0 голосов
/ 25 мая 2020

У меня есть шаблонный класс sparseSet<T>, это индексированный класс хранения. У меня есть шаблонная переменная для хранения вещей в sparseSet<T> components. Я хотел бы иметь ряд функций, которые обращаются к данным в переменной components, они будут получать указатели на n-й элемент в sparseSet, вы можете предположить, что они все одного размера, например:

function1(foo*, bar*, baz*)
function2(bar*, baz*)
function3(foo*, baz*)

Вы можете предположить, что sparseSet<foo> components sparseSet<bar> components sparseSet<baz> components все существуют, но их нельзя жестко запрограммировать. теперь мой вопрос в том, как я могу обобщить вызов функции таким образом, чтобы я мог вызвать функцию, скажем iterateOver(), и передать ей подпись функции, и она будет получать доступ к данным из переменной components, я думал об использовании переменных c шаблонных функций, но я не думаю, что это сработает, есть предложения? Любая помощь приветствуется!

1 Ответ

0 голосов
/ 25 мая 2020

вы можете использовать шаблон Variadi c как этот

template<typename ...Arg>
void function1(Arg&& ...arg) // pack the argument
{
   function(std::forward<Arg>(arg)...);//unpack and call the relevant function
}

вы также можете прочитать больше и посмотреть пример здесь

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