Copy Constructor Error: returning a value from a constructor

Copy Constructor Error: returning a value from a constructor

我可能刚刚做了一些愚蠢的事情,但我无法在任何地方找到此错误消息的答案。

我遇到的问题是我一直收到错误 "returning a value from a constructor"

我这里的代码是一个拷贝构造函数:

RealBox::RealBox(const RealBox& rhs)
{
  if(this != &rhs)
  {
    m_boxsize = rhs.m_boxsize;
    delete[] m_reals;
    m_reals = new float [m_boxsize];

    for(int i=0;i<m_boxsize;i++)
    {
      m_reals[i]=rhs.m_reals[i];
    }
  }
  return *this;
}

来自 class:

class RealBox
{ 
  private:  
    float* m_reals;                     // Array of Real Numbers
    int m_boxsize;                      // number of Real Numbers    


public:
  RealBox(int s, float a);
  ~RealBox();
  const RealBox& operator=(const RealBox& rhs);

  // Purpose: Copy Constructor
  // Parameters: rhs - RealBox to be copied
  // Postconditions:  *this == rhs
  RealBox(const RealBox& rhs);

  void set( int i, float x);
  friend std::ostream& operator<< (std::ostream& out, 
                               const RealBox& box);
};

我确定我刚刚做了一些愚蠢的事情,但我想不通,任何帮助将不胜感激。

从复制构造函数中删除 return *this;

PS - 我认为向复制构造函数传递对 *this 的引用是无效的,因此您不必针对它进行保护。如果它以某种方式发生,要么要从中复制的传递参数本身未构造,要么您正在重新构造一个已经构造的对象。不管怎样都是错的。

不要return复制ctor。

return *this;错误。

我认为你把赋值运算符复制构造函数函数混淆了。