gpt4 book ai didi

c++ - 复制构造函数错误 : returning a value from a constructor

转载 作者:行者123 更新时间:2023-11-28 02:31:56 24 4
gpt4 key购买 nike

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

我遇到的问题是我一直收到错误“从构造函数返回一个值”

我这里的代码是一个复制构造函数:

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 的引用是无效的,因此您不必针对它进行保护。如果它以某种方式发生,要么要从中复制的传递参数本身未构造,要么您正在重新构造一个已经构造的对象。无论哪种方式都是错误的。

关于c++ - 复制构造函数错误 : returning a value from a constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28756661/

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