在特定情况下,我很难弄清楚我的赋值运算符。我有两个对象数组,一个在另一个。我正在从一个文件中读取信息,其中一些存储在顶级对象中,一些存储在它的数组中。当我使用 '=' 对这些进行排序时,内部数组中的信息似乎与之前的任何内容连接在一起,而不是替换它。
class TopLevel
{
public:
TopLevel();
TopLevel(const TopLevel &);
~TopLevel();
const TopLevel& operator=(const TopLevel &);
private:
InnerLevel *inlevel[8];
int numObjectsInArray;
class InnerLevel
{
public:
InnerLevel();
InnerLevel(const InnerLevel &);
~InnerLevel();
const InnerLevel& operator=(const InnerLevel &);
private:
string var1;
string var2;
这是赋值运算符
const TopLevel& TopLevel::operator=(const TopLevel &right )
{
if ( &right != this )
{
numObjectsInArray = right.numObjectsInArray;
for ( int i = 0; i < right.numObjectsInArray; i++ )
*inlevel[i] = *right.inlevel[i];
}
return *this;
}
InnerLevel 中的赋值运算符非常简单
const InnerLevel& InnerLevel::operator=( const InnerLevel &right )
{
if ( &right != this )
{
var1 = right.var1;
var2 = right.var2;
}
return *this;
}
我正在读取文件并进行排序...
for (i = 0; i < count; i++)
if (conditions for numeric sort)
break;
for(int j = count - 1; j >= i; --j)
tplevel[j + 1] = tplevel[j];
在文件读取结束时,我正在打印整个混乱。假设我在 tplevel 中有两个对象,每个对象在 InnerLevel 中有 2 个对象。tplevel[2] 是:
2 aaaaa aaaaa
2 bbbbb bbbbb
和 tplevel[1] 是
1 ccccc ccccc
1 ddddd ddddd
在排序之后,我最终得到的 tplevel[2] 是:
2 aaaaa aaaaa
2 bbbbb bbbbb
2 ccccc ccccc
2 ddddd ddddd
我只想将索引 1 复制到 2,而不是添加到其中……有什么想法吗?