ฉันกำลังเขียนห้องสมุดพีชคณิตเชิงเส้น (เรื่องสั้นสั้น ๆ มันเป็นโรงเรียนที่ได้รับมอบหมาย) ที่เกี่ยวข้องกับเมทริกซ์เวกเตอร์ ฯลฯ ในกระบวนการสร้างห้องสมุดนี้ฉันจะต้องสร้างฟังก์ชั่นที่ดำเนินการทางคณิตศาสตร์กับวัตถุ ตัวอย่างเช่น transpose matrix, invert matrix, normalize vector และอื่น ๆ
ฉันสงสัยว่า "วิธีปฏิบัติที่ดีที่สุด" สำหรับฟังก์ชั่นประเภทนี้คืออะไรนั่นคือฉันควรทำให้ฟังก์ชั่นเป็นฟังก์ชันสมาชิกหรือไม่เป็นสมาชิกหรือไม่? (เพื่อความชัดเจน / ใช้ประโยชน์สาเก)
ตัวอย่าง:
//Member function way:
B = A.transpose();
C = A.inverse();
//Non-member function way:
B = linalg::transpose(A); //Non-member transpose function in linear algebra namespace
C = linalg::inverse(A);
มีมาตรฐานเกี่ยวกับการดำเนินการหลายประเภทบ้างไหม? หรืออย่างน้อยก็มีวิธีธรรมดา ๆ ที่ผู้คนจะทำเช่นนี้? ฉันกำลังมุ่งไปที่ตัวเลือกแรก แต่ฉันอยากจะรู้ว่านี่เป็นสิ่งที่แนะนำหรือไม่