Как вернуть копию данных в C ++ - PullRequest
4 голосов
/ 21 марта 2010

Я пытаюсь вернуть новую копию данных в класс шаблона C ++. Следующий код получает эту ошибку: 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 Ответ

11 голосов
/ 21 марта 2010

new создает и возвращает указатель. Вы просто хотите copy , которая будет создана неявно, поскольку оператор return вызовет конструктор копирования (или эквивалент для POD) объекта T:

return n->get_data();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...