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;
错误。
我认为你把赋值运算符和复制构造函数函数混淆了。
我可能刚刚做了一些愚蠢的事情,但我无法在任何地方找到此错误消息的答案。
我遇到的问题是我一直收到错误 "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;
错误。
我认为你把赋值运算符和复制构造函数函数混淆了。