Если хранить кортеж в классе, как, например:Получение значений хранимого кортежа с автоматическими C++
class BaseA { } //So that I can store A in a class
template <typename Args...>
class A : public BaseA {
public:
//I'm omitting the constructors
private:
std::tuple<Args...> storedTup;
}
ли вы иметь возможность получить значение позже, делая что-то вдоль линий этого?
//Change BaseA
class BaseA {
public:
virtual ~BaseA(){}
auto returnTuple();
}
//Change A
template <typename Args...>
class A : public BaseA {
public:
auto returnTuple() -> decltype(storedTup) {
return storedTup;
}
private:
std::tuple<Args...> storedTup;
}
Я понимаю, что это не работает, но есть ли легкое решение, которое я пропускаю. Из того, что я видел, decltype может использовать члены, прошедшие через функцию (в моем случае returnTuple), но так как мой кортеж уже сохранен, что не поможет. Был бы еще один способ сделать тип автоматического возврата для кортежа?
Что такое 'BaseA :: returnTuple()'? – Barry
@Barry Вы не можете сохранить переменную шаблона, чтобы у вас был класс A save as BaseA. Это может помочь, что я говорю. http://stackoverflow.com/questions/569073/c-stdmap-of-template-class-values – TrevorPeyton