मैं एक रेखीय बीजगणित पुस्तकालय (लंबी कहानी संक्षेप में लिख रहा हूं, यह एक स्कूल असाइनमेंट है) जिसमें मैट्रिसेस, वैक्टर आदि शामिल हैं। इस पुस्तकालय को बनाने की प्रक्रिया में, मैं उन कार्यों का निर्माण करने जा रहा हूं जो वस्तुओं पर गणितीय कार्य करते हैं। उदाहरण के लिए, मैट्रिक्स को स्थानांतरित करें, मैट्रिक्स को उल्टा करें, वेक्टर को सामान्य करें, आदि।
मैं उत्सुक था कि इस प्रकार के फ़ंक्शन के लिए "सबसे अच्छा अभ्यास" क्या है ... यही है, क्या मुझे फ़ंक्शन को सदस्य फ़ंक्शन या गैर-सदस्य बनाना चाहिए? (स्पष्टता / पुस्तकालय उपयोग के लिए)
उदाहरण:
//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);
क्या इन प्रकार के संचालन के बारे में कुछ मानक हैं? या, कम से कम, क्या ऐसा करने का एक आम तरीका है? मैं पहले विकल्प की ओर झुक रहा हूं, लेकिन मैं जानना चाहता हूं कि क्या यह अनुशंसित है।