use*_*020 2 c++ templates c++11 c++14
例如,我有一个班级
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.
};
Run Code Online (Sandbox Code Playgroud)
我希望我能用它
A a;
a.set<Member1Type>(args... to construct Member1Type);
Run Code Online (Sandbox Code Playgroud)
喜欢的
make_shared<T>(args...);
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在实现该方法时将成员类型链接到正确的成员.谢谢!
我会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;
Run Code Online (Sandbox Code Playgroud)
你现在需要 std::get<std::shared_ptr<T>>(m_members)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |