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

Jos*_*ren 4 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 **********
}
Run Code Online (Sandbox Code Playgroud)

Kon*_*lph 11

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

return n->get_data();
Run Code Online (Sandbox Code Playgroud)