2012-02-08 13 views
7

यह कोड "संदेश अपेक्षित" त्रुटि संदेश को संकलित और उत्पन्न नहीं करेगा। जैसा कि उपर्युक्त प्रकार घोषित किया गया है, मुझे समझ में नहीं आता क्यों।विधि घोषणा में "अपेक्षित प्रकार" संकलन त्रुटि के कारण को समझें, जब प्रकार को परिभाषित किया गया है

enum TMyType 
{ 
    Etype1, 
    Etype2 
}; 

@interface Factory : NSObject 

+ (void) foo: (TMyType) actionType; 

@end 

उत्तर

7

कस्टम प्रकार को परिभाषित करने के लिए, सही तरीका टाइपिफ़ के साथ है।

प्रयास करें ...

typedef enum 
{ 
    Etype1, 
    Etype2 
} TMyType; 

संपादित करें: कुछ ही समय बाद यह प्रश्न पूछा गया था और उत्तर दिया, एप्पल बाहर प्रगणित डेटा प्रकार करने के लिए एक नया तरीका के साथ आया था। Here's इस पर एक गहन लेख है।

typedef NS_ENUM(NSInteger, TMyType) { 
    Etype1, 
    Etype2 
}; 
2
+ (void) foo: (enum TMyType) actionType; 

या .mm (और objective-c++ साथ ReTag प्रश्न) का उपयोग करें।

+0

धन्यवाद, .mm क्या प्रतिनिधित्व करता है? – Gruntcakes

+0

@Mungbeans यह एक उद्देश्य-सी ++ स्रोत फ़ाइल का प्रतिनिधित्व करता है। सी/ओब्जे-सी में, एक enum पूरी तरह से टाइप किया जाना चाहिए, उदा। 'enum myType myArg = myEnumValue; '। सी ++ में, आप इसे इस तरह संदर्भित कर सकते हैं: 'myType myArg = myEnumValue;', क्योंकि C++ कंपाइलर स्वचालित रूप से 'enum' का अनुमान लगाएगा। –

+0

'उद्देश्य-सी ++' जैसा कि मैंने अभिभावकीय टिप्पणी में सुझाव दिया था। –

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