У меня есть класс шаблона, который выглядит следующим образом:C++: член Access класса член-подобный метод
template<int n=3> struct Vec{
double Values[n];
};
Конечно, я могу получить доступ к элементам этого класса непосредственно или с помощью метода, например:
double& x(){
return Values[0];
}
Но если я хотел бы сделать более интуитивный код: вместо
Vec<3> v;
v.x() = 5.2;
Я хотел бы, чтобы пользователь сделать это: v.x = 5.2
. Это не только прихоть. Если у меня есть существующая библиотека, которая использует простые векторные структуры формы, такой как struct{double x,y,z;}
, я мог бы с помощью метода утиного ввода создать класс шаблона, чтобы быть эффективным в этом случае. Конечно, я мог (возможно, не уверен) передать в эту библиотеку предопределенную структуру реферов - например: struct{double &x=v.Values[0], &y=v.Values[1], &z=v.Values[2];}
, но я боюсь, что это не самый простой способ получить цель.
Ах, конечно, я мог бы добавить параметры ссылочного типа в свою структуру, но это могло бы привести к увеличению размера элементов.
почему вы думаете, что массив будет любой более эффективной, что дискретная переменная доступа? –
Если у вас есть способ шаблона различного количества дискретных переменных, я хочу знать его :) – Ch3shire
Возможно, вы ищете std :: tuple <...> как шаблон. Вы можете получить элементы кортежа с помощью std :: get < INDEX > и установить их с помощью std :: tie и т. Д.? – JimmyNJ