के रूप में वापस लौटाएं, मैं एक फ़ंक्शन के एक भाग के रूप में एक मैट्रिक्स के ब्लॉक को वापस करने का प्रयास कर रहा हूं। मान लीजिए कि मेरी समारोह इस तरह दिखता है:ईजिन लाइब्रेरी: एक फ़ंक्शन में एक मैट्रिक्स ब्लॉक को lvalue
Block<Derived> getBlock(MatrixXd & m, int i, int j, int row, int column)
{
return m.block(i,j,row,column);
}
यह पता चला है के रूप में, ऐसा लगता है C++ कम्पाइलर समझता है कि कि ब्लॉक() ऑपरेटर केवल अस्थायी मूल्य और इसलिए यह लौटने के रूप में एक lvalue संकलक द्वारा निषिद्ध है देता है। हालांकि, ईजिन दस्तावेज में कुछ उदाहरण हैं कि हम ईजिन को एक लैवल्यू (http://eigen.tuxfamily.org/dox/TutorialBlockOperations.html#TutorialBlockOperationsUsing) के रूप में उपयोग कर सकते हैं, इसलिए मैं सोच रहा हूं कि हम फ़ंक्शन के साथ ऐसा कैसे नहीं कर सके वापसी।
a.block(0,0,2,3) = a.block(2,1,2,3);
धन्यवाद!
मेरे बुनियादी समाधान को पता है कि व्युत्पन्न टाइप आप ब्लॉक होना चाहते है:
अभिव्यक्ति टेम्पलेट्स के लिए धन्यवाद, ब्लॉक() वास्तव में ब्लॉक को प्रतिलिपि नहीं देता है, इसके बजाय यह केवल –
@ user3183610 अभिव्यक्ति देता है ताकि मूल्यांकन के लिए ब्लॉक (अभिव्यक्ति) को कैसे बल दिया जाए। मेरा मतलब वैध लैवल्यू के रूप में है। – stanleyerror