Get type of the parameter from list of objects, templates, C++

Posted by CrocodileDundee on Stack Overflow See other posts from Stack Overflow or by CrocodileDundee
Published on 2011-02-20T15:16:28Z Indexed on 2011/02/20 15:24 UTC
Read the original article Hit count: 202

Filed under:
|
|
|

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
}

© Stack Overflow or respective owner

Related posts about c++

Related posts about templates