【发布时间】:2015-03-19 09:51:33
【问题描述】:
如果我在一个类中存储一个元组:
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 您无法保存模板变量,因此您将 A 类保存为 BaseA。这可能有助于我所说的。 stackoverflow.com/questions/569073/…
标签: c++ templates base-class stdtuple