class WholeNumbers 类型引用的无效初始化
invalid initialization of reference of type for class WholeNumbers
我正在尝试写出一个名为 WholeNumber 的 class。我还没有写完它,我喜欢尝试经常编译,这样我就可以保持低错误和可管理的错误。当我按原样编译 class 时,出现此错误:
fibonacci.cpp:在成员函数‘std::__cxx11::list& WholeNumber::operator=(WholeNumber&)’中:
fibonacci.cpp:41:14: 错误:从类型为“WholeNumber”的表达式对类型为“std::__cxx11::list&”的引用的初始化无效
return *这个;
我已经尝试查找错误以查看是否可以找到问题的答案,但我只能发现您无法从 const 引用初始化非常量引用。我不明白那可能指的是我的代码。我错过了什么?
#include <iostream>
#include "fibonacci.h" // for fibonacci() prototype
#include <list>
#include <vector>
using namespace std;
class WholeNumber
{
private:
list <int> digits;
public:
//default constructor
WholeNumber() { }
//non-default constructor
WholeNumber(unsigned int number) {number = 0;}
//copy constructor
WholeNumber(const WholeNumber & rhs) { }
//destructor
~WholeNumber() { }
friend ostream & operator << (ostream & out, const list <int> * l);
istream & operator >> (istream & in);
WholeNumber & operator +=(const WholeNumber & rhs);
list <int> & operator = (WholeNumber & rhs)
{
this->digits = rhs.digits;
return *this;
}
};
复制赋值运算符的返回类型为list <int> &
list <int> & operator = (WholeNumber & rhs)
{
this->digits = rhs.digits;
return *this;
}
但是返回了类型为 WholeNumber
(*this
) 的对象,并且没有从一种类型到另一种类型的隐式转换。
也许你的意思是下面的
WholeNumber & operator = ( const WholeNumber & rhs )
{
this->digits = rhs.digits;
return *this;
}
还有这些运算符
friend ostream & operator << (ostream & out, const list <int> * l);
istream & operator >> (istream & in);
无效。例如,第一个运算符应该声明为
friend ostream & operator << (ostream & out, const WholeNumber & );
第二个运算符也应该是一个友元函数,比如
friend istream & operator >> ( istream & in, WholeNumber & );
我正在尝试写出一个名为 WholeNumber 的 class。我还没有写完它,我喜欢尝试经常编译,这样我就可以保持低错误和可管理的错误。当我按原样编译 class 时,出现此错误:
fibonacci.cpp:在成员函数‘std::__cxx11::list& WholeNumber::operator=(WholeNumber&)’中: fibonacci.cpp:41:14: 错误:从类型为“WholeNumber”的表达式对类型为“std::__cxx11::list&”的引用的初始化无效 return *这个;
我已经尝试查找错误以查看是否可以找到问题的答案,但我只能发现您无法从 const 引用初始化非常量引用。我不明白那可能指的是我的代码。我错过了什么?
#include <iostream>
#include "fibonacci.h" // for fibonacci() prototype
#include <list>
#include <vector>
using namespace std;
class WholeNumber
{
private:
list <int> digits;
public:
//default constructor
WholeNumber() { }
//non-default constructor
WholeNumber(unsigned int number) {number = 0;}
//copy constructor
WholeNumber(const WholeNumber & rhs) { }
//destructor
~WholeNumber() { }
friend ostream & operator << (ostream & out, const list <int> * l);
istream & operator >> (istream & in);
WholeNumber & operator +=(const WholeNumber & rhs);
list <int> & operator = (WholeNumber & rhs)
{
this->digits = rhs.digits;
return *this;
}
};
复制赋值运算符的返回类型为list <int> &
list <int> & operator = (WholeNumber & rhs)
{
this->digits = rhs.digits;
return *this;
}
但是返回了类型为 WholeNumber
(*this
) 的对象,并且没有从一种类型到另一种类型的隐式转换。
也许你的意思是下面的
WholeNumber & operator = ( const WholeNumber & rhs )
{
this->digits = rhs.digits;
return *this;
}
还有这些运算符
friend ostream & operator << (ostream & out, const list <int> * l);
istream & operator >> (istream & in);
无效。例如,第一个运算符应该声明为
friend ostream & operator << (ostream & out, const WholeNumber & );
第二个运算符也应该是一个友元函数,比如
friend istream & operator >> ( istream & in, WholeNumber & );