简化后的问题代码
#include <iostream>
using namespace std;
class MyArray
{
public:
MyArray(int& length){ }
};
int main()
{
MyArray myarray(5) ;
return 0;
}
理论原因
官方解答: 这种问题一般是因为引用了匿名变量。涉及左值和右值的区别。一般函数的参数如果是一个表达式,那将会产生一个第3方的匿名变量传入这个函数中,此时如果引用,没用什么实际意义。
简而言之:明明是传地址,直接5的话并没有具体指定地址,传不了。
解决方案
int a=5;
传a即可
#include <iostream>
using namespace std;
class MyArray
{
public:
MyArray(int& length){ }
};
int main()
{
int a=5;
MyArray myarray(a) ;
return 0;
}