ฉันมีตัวสร้างที่ใช้อาร์กิวเมนต์บางอย่าง ฉันสันนิษฐานว่าพวกเขาถูกสร้างขึ้นตามลำดับที่ระบุไว้ แต่ในกรณีหนึ่งดูเหมือนว่าพวกเขากำลังสร้างในสิ่งที่ตรงกันข้ามทำให้เกิดการยกเลิก เมื่อฉันย้อนกลับข้อโต้แย้งโปรแกรมหยุดยกเลิก นี่คือตัวอย่างของไวยากรณ์ที่ฉันใช้ สิ่งนี้คือ a_ ต้องเริ่มต้นก่อน b_ ในกรณีนี้ คุณสามารถรับประกันลำดับของการก่อสร้างได้หรือไม่?
เช่น
class A
{
public:
A(OtherClass o, string x, int y) :
a_(o), b_(a_, x, y) { }
OtherClass a_;
AnotherClass b_;
};