我有一个如下所示的课程:

template <class TValue>
    class ICData
    {
    private :
TValue value;
    public:
inline ICData()
{
};
TValue get_value();
void set_value(TValue data);
    };

    template <class TValue>
    TValue ICData<TValue>::get_value()
    {
return value;
    }

     template <class TValue>
     void ICData<TValue>::set_value(TValue _value)
     {
value=_value;
     }


我知道如何通过以下方式制作指针数组:

    ICData <int> *ICArray[10];
    ICArray[0]=new ICData<int>();
    ICArray[1]=new ICData<int>();


但是有没有办法使用模板制作指针数组?如下所示:

            template <class T>// iknow this code is WRONG
    ICData <T> *ICArray[10];
    ICArray[0]=new ICData<int>();
    ICArray[1]=new ICData<float>();


提前致谢。

最佳答案

如果要存储指向ICData<int>ICData<float>的指针,则这些类型必须具有公共基类,并且可以使用该公共基作为指向的类型。

就目前而言,类型ICData<int>ICData<float>是不相关的,因此除了使用void *之外,没有其他方法可以解决您要执行的操作,而不会涉及一些难看的转换。

09-09 19:20