对于一个函数的参数为引用,如果想接收临时变量,就必须加上 const。
class A{
public:
A(int aa) {}
};
void f(A& a) {
};
int main(int argc, char* avgv[])
{
f(A(5));//报错:必须为左值
return 0;
}
因为
A(5)
是个临时变量。需改成 A b=A(5); f(b);这时b才是左值,可以做引用。
或者将函数原型加上const即可:
void f(const A& a) {
};
Matrix4& Matrix4::operator=(Matrix4& m) {
for(int i = 0; i < 16; i++) {
mat[i] = m.raw()[i];
}
return *this;
}
Matrix4 t = Matrix4::translation(elapsed * speed + lastPos, 0.0, 0.0);
matrix = matrix * t; //ERROR HERE
这里一个临时对象不能绑定到一个”非const引用”上。所以要定义成:
Matrix4& Matrix4::operator=(<span><strong>const</strong> </span>Matrix4& m) {
not ok:
class B {};
class A {
const B b_;
void set(const B& b) { b_ = b; }
};
const b = const b没有定义
Original: https://www.cnblogs.com/bigben0123/p/15190080.html
Author: Bigben
Title: c++报错: No viable overloaded ‘=’ 临时变量与引用参数 const
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535440/
转载文章受原作者版权保护。转载请注明原作者出处!