0

如果我在一个类中存储一个元组:

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),但由于我的元组已经存储,这并没有真正的帮助。是否有另一种方法可以使自动返回类型成为元组的类型?

4

1 回答 1

3

由于returnTuple()需要有一个统一的返回类型,不,你不能这样做。您需要想出某种方法以统一的方式表达元组,可能是通过多态类型或可区分联合的向量等。

于 2015-01-21T00:51:14.663 回答