如何使用原始指针初始化unique_ptr

时间:2020-10-08 16:55:29

标签: unique-ptr

我试图通过从另一个方法Accesses()调用方法NextAccess()从文件读取N条跟踪线。以下是他们的代码段:

bool NextAccess( Trace* nextAccess )
{
  // Accesses a trace file and retrieves a trace line into nextAccess
  .....
}


int Accesses( unsigned int N, vector<unique_ptr<Trace>>& nAccesses )
{

    int successes;
    Trace *nextLine;

    successes = 0;

    for( unsigned int i = 0; i < N; i++ )
    {
         nextLine = new Trace( );
         unique_ptr<Trace> next;
         if( NextAccess(nextLine))
         {
              next = std::make_unique<Trace>(nextLine);
              nAccesses.push_back(std::move(next));
              successes++;
         }
    }
    return successes;
} 

在if部分的第一行启用C ++ 14的情况下运行时出现以下错误:

error: ‘make_unique’ is not a member of ‘std’

error: expected primary-expression before ‘>’ token

此代码是否会导致内存泄漏,以及如何纠正此代码? NextAccess()是一种无法更改原始指针的参数类型的方法,因为它是较大的相互依赖代码的一部分。请提出任何解决方案。

0 个答案:

没有答案
相关问题