2011-03-31 13 views
6

निम्नलिखित does not को इंटेल फोरट्रान XE 2011 में संकलन:प्रक्रिया सूचक, व्युत्पन्न प्रकार

TYPE type1 
    procedure(interface1),POINTER::p 
END TYPE type1 

ABSTRACT INTERFACE 
    integer function interface1(a) 
     real,intent(in)::a  
    END function interface1 
END INTERFACE 

त्रुटि:

error #8262: The passed-object dummy argument must be dummy data object with the same declared type as the type being defined. 

उत्तर

8

प्रक्रिया सूचक घटक की घोषणा करने के nopass विशेषता जोड़ें।

procedure(interface1), pointer, nopass :: p 

संपादित करें: अपनी टिप्पणी के जवाब में, आप पास कीवर्ड का उपयोग करना चाहते हैं, इंटरफ़ेस जैसे बदल करना होगा:

 
ABSTRACT INTERFACE 
    integer function interface1(passed_object, a) 
     import :: type1 
     class(type1), intent(...) :: passed_object 
     real,   intent(in) :: a 
    END function interface1 
END INTERFACE 
+0

धन्यवाद! क्या आप समझाएंगे, यह मेरी समस्या का हल क्यों करता है? –

+0

'nopass' विशेषता को स्पष्ट रूप से निर्दिष्ट किए बिना, घटक में स्वचालित रूप से' पास' विशेषता होती है (जिसे स्पष्ट रूप से भी निर्दिष्ट किया जा सकता है)। इसका मतलब है कि प्रक्रिया का पहला डमी तर्क उसी प्रकार का होना चाहिए जैसा कि प्रकार परिभाषित किया गया है (जैसा कि आपके त्रुटि संदेश में बताया गया है)। Procpointer घटक का जिक्र करते समय, जिस वस्तु के माध्यम से इसे बुलाया जाता है उसे स्वचालित रूप से पहले तर्क के रूप में पारित किया जाता है। – eriktous

+0

यदि मैं 'पास' कीवर्ड का उपयोग करना चाहता हूं तो मुझे 'इंटरफ़ेस 1' को बदलने की आवश्यकता कैसे होगी? –

संबंधित मुद्दे