У меня есть класс с некоторыми "волосатыми" частными полями. Для каждого есть функции доступа (геттеры и сеттеры).
private:
array<double, 9> foo;
public:
const array<double, 9> & getFoo() const { return foo; }
void setFoo(const array<double, 9> & _foo) { foo = _foo; }
Мне бы очень хотелось, чтобы не приходилось повторять array<double, 9>
в другом месте - используя decltype
для ссылки на тип поля, каким бы оно ни было.
К сожалению, простой вызов decltype(instance.foo)
не работает вне класса, потому что foo
является личным.
К счастью, decltype(getFoo())
почти работает - getFoo
является общедоступным и должен иметь тот же тип.
К сожалению, вышеприведенное «почти» недостаточно, - тип getFoo
на самом деле , ссылка (array<double, 9> &
).
Как получить фактический тип в коде вне класса, чтобы я мог, например, вызвать функцию-установщик:
SOMETHING values;
for (auto &i : values)
i = something();
instance.setFoo(values);