代码之家  ›  专栏  ›  技术社区  ›  Josh Curren

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

  •  4
  • Josh Curren  · 技术社区  · 16 年前

    我试图在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 回复  |  直到 13 年前
        1
  •  11
  •   Konrad Rudolph    16 年前

    new 创建并返回指针。你只想要一个 复制 它将隐式创建,因为返回语句将调用对象的复制构造函数(或与pod等效的构造函数)。 T 以下内容:

    return n->get_data();