2013-03-03 51 views
0

出于某种原因,我的赋值操作符产生总线错误,当我尝试使用它:重载赋值运算符总线错误

hand1 = hand2; 


//overload assignment operator 
Hand Hand::operator=(Hand other_hand) 
{ 

    if(&other_hand != this){ 
     name = other_hand.name; 
     cards = other_hand.cards; 

    } 

    return *this; 
} 

return语句之后

+2

你正在服用并返回副本,你可能不想这样做。 – 2013-03-03 01:39:39

+1

复制交换!复制交换! – chris 2013-03-03 01:44:01

+0

另外,你能告诉我们一个手的定义吗?目前还不清楚是否有名字或卡片有需要管理的内存,即你是否在删除析构函数中加倍删除内容? – 2013-03-04 01:57:59

回答

1

所有分配首先应该有一个出现的错误签名看起来像这样:

Hand & Hand::operator=(const Hand &other_hand) 

你可能不想传递和返回副本指出而且要允许经营链,即:

hand1 = hand2 = hand3 .... 

这是一个basic reference。还提到复制和交换,这previous thread完成解释它的完美工作。