Преобразование в шаблонный класс в функции
Я сожалею о простой функции, которая преобразует объекты из структуры данных, подобной массиву, в подобную связному списку, причем оба являются собственными классами ArchiCAD.
Вопрос в том, можно ли это сделать для любых объектов.
Код выглядит так:
GS::Array<class T> *GetItemsFromNeig(API_Neig **p_neigs)
{
UInt32 nSel = BMGetHandleSize((GSHandle)p_neigs) / sizeof(API_Neig);
GS::Array<T>* resultArray = new GS::Array<T>;
for (UInt32 ii = 0; ii < nSel; ++ii) {
resultArray->Push((T) *p_neigs[ii]); //incomplete type is not allowed
}
return resultArray;
}
Ошибка не является сюрпризом, вопрос в том, можно ли написать такую функцию.
1 ответ
Решение
Для журнала ответ:
template <class T>
GS::Array<T> *GetItemsFromNeig(API_Neig **p_neigs)
{
UInt32 nSel = BMGetHandleSize((GSHandle)p_neigs) / sizeof(API_Neig);
GS::Array<T>* resultArray = new GS::Array<T>;
for (UInt32 ii = 0; ii < nSel; ++ii) {
resultArray->Push((T) (*p_neigs)[ii]);
}
return resultArray;
}