我的代码有问题。
class RefC
{
public:
std::string cCommit;
std::list<Commit>::iterator itc;
RefC(
const std::string &cod,
const std::list<Commit>::iterator &it = std::list<Commit>::iterator()
):cCommit(cod), itc(it) {}
RefC( const RefC &orig )
: cCommit( orig.cCommit ), itc( orig.itc ) {}
bool operator<(const RefC &rc) const
{
return cCommit < rc.cCommit;
}
};
这是我的RefC课,但是当我打电话给她去做的时候:
indiceCommits.insertar(RefC(comm.getCodigo(),itc));
这给我
为什么?我该如何解决?
谢谢 ;)
最佳答案
问题不在您的RefC类中,而是在insertar()函数的声明中。我想看起来像
insertar( RefC& r);
但是您要传递一个临时对象(rvalue),仅当参数类型为const-ref时才有可能
insertar( const RefC& r);
rvalue表示只能位于赋值右侧的值,例如x = y,x必须是一个左值,通常是带有名称的东西,可以为其分配值的东西,而右值(y)可以是常量,文字,临时对象等。