2012-07-14 273 views
0

分配在cm變量下面的代碼的變量被分配在堆棧上和是一個方法的原型:重新初始化堆棧

ConstraintManager cm(5); 

void addConstraints(ConstraintManager& cm); 

當我打電話addConstraints我想重新初始化內部釐米可變函數的主體。這就是調用它的構造如做這樣cm(3),使其重新初始化爲包含3個,而不是5。但是我不能做到這一點,我唯一可以做的事情是:

ConstraintManager temp(3); 
cm = temp; 

是否有辦法以更簡潔的方式實現這一目標?謝謝。

+0

是'釐米= ConstraintManager(3);足夠'不是很好嗎?如果不是,你需要顯示'ConstraintManager'的定義。 – 2012-07-14 23:15:13

+0

如果ConstraintManager是您創建的類,而3是存儲在類內的變量,那麼爲什麼重新創建整個類?您可以將該變量更改爲5. – Caesar 2012-07-14 23:15:28

+0

是的,但不能修改該類,不幸的是 – Cemre 2012-07-14 23:15:55

回答

0

是,但我不能修改類不幸

如果沒有直接的方法來更改該成員在類,這意味着,在我的書的公共接口,你是不應該改變它。

如果你一定要,你已經擁有了什麼是做到這一點,只有更簡潔:

cm = ConstraintManager(3); 
+2

如果沒有賦值運算符,但只有一個無拋出構造函數,那麼還可以說:'cm。〜ConstraintManager();新(&cm)ConstraintManager(3);' – 2012-07-14 23:47:05