gpt4 book ai didi

c++ - 类 WholeNumbers 类型引用的无效初始化

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:43 24 4
gpt4 key购买 nike

我正在尝试编写一个名为 WholeNumber 的类。我还没有写完它,我喜欢尝试经常编译,这样我就可以保持低错误和可管理的错误。当我按原样编译该类时,出现此错误:

fibonacci.cpp: 在成员函数‘std::__cxx11::list& WholeNumber::operator=(WholeNumber&)’中:fibonacci.cpp:41:14: 错误:从“WholeNumber”类型的表达式对“std::__cxx11::list&”类型的引用进行无效初始化 返回 *this;

我已经尝试查找错误以查看是否可以找到问题的答案,但我只能发现您无法从 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 & );

关于c++ - 类 WholeNumbers 类型引用的无效初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58645274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com