0
4

2 回答 2

0

你可能会这样处理它:

struct ObjBase 
{
  virtual void print() const = 0;
};

template <typename T>
class Obj : public ObjBase
{
    public:
    T a;

    public:
    Obj(T a_) : a(a_) {}

    virtual void print() const
    { std::cout << "a : " << a << std::endl; }

};

template <typename T>
class A
{
    public:
    ObjBase *pObj;

    public:
   A(ObjBase* pO) : pObj(pO) {}
    void doSomethingWithObj()
    { pObj->print(); }

    static Obj<double> X;
};

也就是说,有一个基类,它为您想要做的事情提供一个接口,这些事情不依赖于特定类型。

于 2013-09-29T18:04:52.560 回答
0

自己回答。

这是......我忘记了考试中的资格..

template <typename T>
class A
{
    public:
    Obj<T> *pObj;

    public:
   A(Obj<T>* pO) : pObj(pO) {}
    void doSomethingWithObj()
    { pObj->print(); }

    static Obj<T> X;
};

template<typename T>
Obj<T> Obj<T>::X(1.0); 
于 2013-09-30T14:40:21.857 回答