【发布时间】:2018-11-15 15:08:34
【问题描述】:
例如,我有一个班级
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...);
我的问题是如何在实现该方法时将成员类型链接到正确的成员。谢谢!
【问题讨论】:
-
您可以提供一个pointer to data member 到
set来告诉它要设置哪个成员。但要做到这一点,您需要公开成员,包括它们的底层类型,此时尝试用 setter 封装它没有任何意义。