如何在C ++中返回数据的副本

时间:2010-03-21 20:28:24

标签: c++ pointers

我试图在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 **********
}

1 个答案:

答案 0 :(得分:11)

new创建并返回一个指针。您只需要隐式创建的副本,因为return语句将调用对象T的复制构造函数(或POD的等效项):

return n->get_data();