Get type of the parameter from list of objects, templates, C++
- by CrocodileDundee
This question follows to my previous question
Get type of the parameter, templates, C++
There is the following data structure:
Object1.h
template <class T>
class Object1
{
private:
T a1;
T a2;
public:
T getA1() {return a1;}
typedef T type;
};
Object2.h
template <class T>
class Object2: public Object1 <T>
{
private:
T b1;
T b2;
public:
T getB1() {return b1;}
}
List.h
template <typename Item>
struct TList
{
typedef std::vector <Item> Type;
};
template <typename Item>
class List
{
private:
typename TList <Item>::Type items;
};
Is there any way how to get type T of an object from the list of objects (i.e. Object is not a direct parameter of the function but a template parameter)?
template <class Object>
void process (List <Object> *objects)
{
typename Object::type a1 = objects[0].getA1(); // g++ error: 'Object1<double>*' is not a class, struct, or union type
}
But his construction works (i.e. Object represents a parameter of the function)
template <class Object>
void process (Object *o1)
{
typename Object::type a1 = o1.getA1(); // OK
}