我的代码有问题。

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)可以是常量,文字,临时对象等。

10-06 00:29