我试图在C ++ Template类中返回一个新的数据副本。以下代码收到此错误:invalid conversion from 'int' to 'int*'
。如果我删除了new T
,那么我不会返回数据的副本,而是指向它的指针。
template<class T>
T OrderedList<T>::get( int k )
{
Node<T>* n = list;
for( int i = 0; i < k; i++ )
{
n=n->get_link();
}
return new T( n->get_data() ); // This line is getting the error **********
}
答案 0 :(得分:11)
new
创建并返回一个指针。您只需要隐式创建的副本,因为return语句将调用对象T
的复制构造函数(或POD的等效项):
return n->get_data();