一道网友提问的解法

http://topic.csdn.net/u/20091015/15/b61e2747-5909-44d8-b32a-6b420e9306a5.html

 

有一个这样的模板函数:
已知定义了一些类:
class Base
{
public:
      int dataType;
};

class A:public Base
{
...
};

class B:public Base
{
...
};

class D:public B
{
....
};

template <class T>
int LoadSeriesData(vector <T>& dataList,ts_map_params params)//此处的T就是上面定义的一些类的任一一个
{
nt ret = 1;
uuid_t tsid;
ts_data_content *readdata;
  ...

        我想在这取得传过来的泛型参数 dataList 的成员变量dataType,可以吗?
        语法上该怎么写呢?


}

我的解法为:

 

// xxx.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <boost/mpl/vector.hpp> #include <boost/mpl/at.hpp> #include <boost/mpl/size.hpp> using namespace std; using namespace boost; class Base { }; class A:public Base { }; class B:public Base { }; class C:public Base { }; template <typename T> struct IdentType{ static void Out(){cout<<"无这种类型:"<<endl;} }; template<> struct IdentType<A>{ static void Out(){cout<<"A 类型对应的序列为:1"<<endl;} }; template<> struct IdentType<B>{ static void Out(){cout<<"B 类型对应的序列为:2"<<endl;} }; template<> struct IdentType<C>{ static void Out(){cout<<"C 类型对应的序列为:3"<<endl;} }; template<typename TYPE, int N> struct Index{ static void Out(){ IdentType<mpl::at< TYPE, mpl::int_<N-1> >::type>::Out(); Index<TYPE, N-1>::Out(); } }; template<typename TYPE> struct Index<TYPE,0>{ static void Out(){ // IdentType<mpl::at< TYPE, mpl::int_<0> >::type>::Out(); } }; int _tmain(int argc, _TCHAR* argv[]) { typedef mpl::vector<A,B,B,C,A,A>::type colltype; Index<colltype,mpl::size<colltype>::value>::Out(); return 0; }

A 类型对应的序列为:1
A 类型对应的序列为:1
C 类型对应的序列为:3
B 类型对应的序列为:2
B 类型对应的序列为:2
A 类型对应的序列为:1
请按任意键继续. . .

你可能感兴趣的:(c,vector,Class)