c++ - best method to cast bewteen vnl_matrix<int> and vnl_matrix<double> -
सी ++ में, मेरे पास एक ऐसा वर्ग है जो vnl_matrix & lt; int & gt; इनपुट के रूप में एक vnl_matrix & lt; double & gt; क्या मेरे मैट्रिक्स के प्रत्येक तत्व को एक बार एक डबल लूप में से एक के अलावा कास्ट करने के अलावा vnl_matrix & lt; int & gt; से vnl_matrix & lt; double & gt; में डालने का एक सीधा तरीका है?
संपादित करें: एक और मैट्रिक्स के आधार पर मैट्रिक्स के निर्माता निम्न है (मैंने इसे नहीं लिखा, विवरण के लिए देखें। क्या यह "कस्ट / कास्ट" को अनुमति देने के लिए इस कन्स्ट्रक्टर को संशोधित करना संभव है
//: एक नया मैट्रिक्स बनाता है और सभी तत्वों की प्रतिलिपि बनाता है। // हे (मी * n)। टेम्पलेट & lt; वर्ग टी & gt; vnl_matrix & lt; T & gt; :: vnl_matrix (vnl_matrix & lt; T & gt; कॉन्स्ट & amp; से): num_rows (from.num_rows), num_cols (from.num_cols) {vnl_matrix_construct_hack (); if (from.data और amp; from.data [0]) {vnl_matrix_alloc_blah (); टी const * src = from.data [0]; vcl_copy (src, src- this- & gt; num_rows * this-> gt; num_cols, this- & gt; डेटा [0]);} और {num_rows = 0; num_cols = 0; डेटा = 0;}} < / Code>
एक दूसरे को डालने का एकमात्र तरीका है अगर आपके पास ऐसा कन्स्ट्रक्टर था:
टेम्पलेट & lt; typename T & gt; class vnl_matrix {// रूपांतरण टेम्पलेट & lt; typename यू, typename = std :: enable_if & LT; std :: is_convertible & lt; u, टी & gt; :: मूल्य & gt; :: प्रकार & gt; Vnl_matrix (कॉन्स्ट vnl_matrix & lt; U & gt; और amp; rhs); }; उस निर्माता, संभवतः मैट्रिक्स में सभी कोशिकाओं को एक लूप में डाल देंगे। लेकिन आपको यह जोड़ना होगा - इसके लिए कोई मूल तंत्र नहीं है इसी तरह, ध्यान दें कि vector & lt; int & gt; से vector & lt; अहस्ताक्षरित int & gt; से "कास्ट" करने का कोई रास्ता नहीं है - आपको मैन्युअल रूप से एक नया सदिश का निर्माण करना होगा
Comments
Post a Comment