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