我有一个如下所示的课程:
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 *
之外,没有其他方法可以解决您要执行的操作,而不会涉及一些难看的转换。