比如我有一个类
class A
{
public:
template<class T, class... Args>
void set(Args&&... args);
private:
std::shared_ptr<Member1Type> m_member1;
std::shared_ptr<Member2Type> m_member2; // Member types are all different.
};
我希望我可以把它当作
A a;
a.set<Member1Type>(args... to construct Member1Type);
喜欢
make_shared<T>(args...);
我的问题是如何在实现该方法时将成员类型链接到正确的成员。谢谢!
最佳答案
我会填充 std::tuple<MemberType1*, MemberType2*, ...>
在 ctor 中,这样你就可以使用 get<T*>(m_tuple)
在 A::set<T, Args...>
[编辑] 或者按照 StoryTeller 的建议,没有额外的成员:
private:
std::tuple <
std::shared_ptr<Member1Type>,
std::shared_ptr<Member2Type>
> m_members;
您现在需要 std::get<std::shared_ptr<T>>(m_members)
关于c++ - 如何制作 set<T>(args...) 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53322393/