วิธีการใช้รูปแบบวิธีการจากโรงงานใน C ++ อย่างถูกต้อง
มีสิ่งหนึ่งใน C ++ ที่ทำให้ฉันรู้สึกไม่สบายตัวเป็นเวลานานเพราะฉันไม่รู้วิธีการทำอย่างสุจริตแม้ว่ามันจะฟังดูง่าย: ฉันจะใช้วิธีการโรงงานใน C ++ ได้อย่างถูกต้องได้อย่างไร เป้าหมาย: เพื่อให้ลูกค้าสามารถสร้างอินสแตนซ์ของวัตถุโดยใช้วิธีการจากโรงงานแทนตัวสร้างของวัตถุโดยไม่มีผลกระทบที่ยอมรับไม่ได้และประสิทธิภาพในการทำงาน โดย "รูปแบบวิธีการของโรงงาน" ฉันหมายถึงทั้งวิธีคงที่จากโรงงานภายในวัตถุหรือวิธีที่กำหนดไว้ในคลาสอื่นหรือฟังก์ชั่นระดับโลก เพียงแค่โดยทั่วไป "แนวคิดของการเปลี่ยนเส้นทางวิธีปกติของการสร้างอินสแตนซ์ของคลาส X ไปที่อื่นนอกเหนือจากตัวสร้าง" ให้ฉันอ่านคำตอบที่เป็นไปได้ที่ฉันคิด 0) อย่าสร้างโรงงานสร้างสิ่งก่อสร้าง สิ่งนี้ฟังดูดี (และมักจะเป็นทางออกที่ดีที่สุด) แต่ไม่ใช่วิธีการรักษาทั่วไป ประการแรกมีกรณีที่การก่อสร้างวัตถุเป็นงานที่ซับซ้อนพอที่จะพิสูจน์การแยกไปยังชั้นอื่น แต่ถึงกระนั้นก็ยังมีการวางความจริงนั้นไว้แม้กระทั่งสำหรับวัตถุอย่างง่ายที่ใช้เพียงแค่ตัวสร้างมักจะไม่ทำ ตัวอย่างที่ง่ายที่สุดที่ฉันรู้คือคลาสเวกเตอร์ 2 มิติ เรียบง่าย แต่ซับซ้อน ฉันต้องการสร้างมันทั้งจากพิกัดคาร์ทีเซียนและขั้ว เห็นได้ชัดว่าฉันไม่สามารถทำ: struct Vec2 { Vec2(float x, float y); Vec2(float angle, float magnitude); // not a valid overload! // ... …