1
我有持有對象的幾個向量類來訪問類的不同成員:如何通過使用特徵模式
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)
將參考返回作爲這樣我可以在矢量層級操縱和訪問每個組件對象方法和數據:
getComp<TYPEA>(thisassy).push_back(newcomponentA);
getComp<TYPEA>(thisassy).back().methodA1();
getComp<TYPEA>(thisassy).front().data1 = 5.0;
感謝,
和田
Mike,感謝您指出C++中缺乏反省。我現在正在閱讀類型列表,希望能夠學習一些關於模板的技巧。 – user966004