错误:没有用于调用带有向量引用

时间:2017-03-14 14:48:56

标签: c++ templates

我正在尝试修补一些遗留代码,并发现此错误与模板有关。

  

错误:没有匹配函数调用'Clause_new(vec&,bool)'子句* c = minisat :: Clause_new(ps,false);

Clause_new是以下模板的一部分:

    namespace minisat
    {
      class Clause {
      public:

         // NOTE: This constructor cannot be used directly (doesn't allocate enough memory).
         template<class V>
         Clause(V& ps, bool learnt) {...}

         template<class V>
         friend Clause* Clause_new(V& ps, bool learnt = false) {...};
    }}

然后在这里调用Clause_new:

bool Solver::addClause(vec<Lit>& ps)
{
     if (!ok)
        ...
     else{
         ... //ps can change here
     }

     if (ps.size() == 0)
         ...
     else if (ps.size() == 1){
         ...
     }else{
         Clause* c = minisat::Clause_new(ps, false);
         ...
     }   
     return true;
 }

我已经尝试将ps的声明更改为const(修改相应的方法声明),但后来我得到了这个错误:

  

错误:将'const minisat :: Lit'传递为'this'参数会丢弃限定符[-fpermissive]。

0 个答案:

没有答案