我有这堂课:
class user
{
private:
string userid;
string password;
public:
user(){};
user(string a, string b){userid = a; password = b;}
~user(){cout<<"Trace";};
void print ( ostream& out );
};
每当我尝试以这种方式追加到我的队列时aqueue.append(user(userid, password);
它将附加到我的队列中,但之后会调用析构函数。队列是指向下一个单元格的基本通用链接列表。我的问题是:如何在没有每次调用析构函数的情况下将类添加到队列中?
答案 0 :(得分:1)
将指针(例如原始指针,std::auto_ptr
,std::unique_ptr
)存储到您要存储的对象,而不是对象本身。
答案 1 :(得分:1)
看起来你正在堆栈中创建对象&amp;将它传递给队列以便追加。 并且当队列接受对象(不是指针或引用)时,它可以深度复制对象&amp;当原始对象的范围得到完成时,它将被删除(破坏)。
使用堆上的新运算符创建对象&amp;然后使用引用或指针传递它。