【发布时间】:2011-10-19 22:45:24
【问题描述】:
我有一个包含多个对象向量的类:
struct ComponentA
{
public:
methodA1();
float data1;
...
};
struct ComponentB
{
...
};
struct ComponentC
{
...
};
struct ComponentD
{
...
};
class Assembly
{
vector<ComponentA> As;
vector<ComponentB> Bs;
vector<ComponentC> Cs;
vector<ComponentD> Ds;
};
我想使用特征并定义一个可以返回对成员的引用的函数,如下所示:
template< int T >
struct ComponentTraits;
template<>
ComponentTraits<TYPEA>
{
typedef vector<ComponentA> data_type;
}
....
template< int T >
ComponentTraits<T>::data_type getComp(const Assembly & myassy)
{
...
}
这样一个电话
getComp<TYPEA>(thisassy)
将返回对 As 的引用,以便我可以在向量级别进行操作并访问每个组件对象的方法和数据:
getComp<TYPEA>(thisassy).push_back(newcomponentA);
getComp<TYPEA>(thisassy).back().methodA1();
getComp<TYPEA>(thisassy).front().data1 = 5.0;
谢谢,
和田
【问题讨论】: