【发布时间】:2012-01-26 22:14:15
【问题描述】:
例如,我有一个包含 n 个成员变量的类 T
class T{
ushort name;
ushort id;
double value;
.....etc...
};
我还有一个类 T1、T2.... 的集合,每个类都由成员变量组成 它们是 T 的成员变量的子集(由于没有更好的词,让我称之为 这是 T 的子集类型)。例如,T1 可能是
class T1 {
ushort name;
double value;
};
它只选择了 T 的两个成员。
我想写一个方法
template <typename X>
T join(T t, X x)
我们返回一个类型为 T 的类,通过将 t 中每个成员变量的值替换为 x 的值(假设 X 是 T 的子类型),t 的其他值保持不变。
我可以考虑通过专业化来做到这一点。但是应该有一个优雅的方法来做到这一点(也许检测类型 X 何时是 T 的子集类型并做正确的事情)。
【问题讨论】: