2011-09-16 11 views
2

構造体をファイルに定義しましたが、別のfile.iでこの構造体を使用したいのですが、C++の構造体を呼び出すために "::" objective-cのために構造体を呼び出す方法。iphone - 構造体を別のファイルで呼び出す方法

My.hファイル "ManageMarketPacket.h"

#import <Foundation/Foundation.h> 
typedef struct ORIGINAL_QUOTA_DATA_tag{ 
    short id; 
    char exch;     
}ORIGINAL_QUOTA_DATA; 
@interface ManageMarketPacket : NSObject {   
} 

マイファイル "ManageMarketPacket.m"

#import "ManageMarketPacket.h" 
@implementation ManageMarketPacket 
@end 

私の他のファイルは、構造体を使用しますので、だから私の.mファイルには、何もしています、私の他のファイル「NetWorkConnect.m」に

#import "ManageMarketPacket.h" 
@implementation NetWorkConnect 
- (id)init{ 
    if (self==[super init]) { 
     ORIGINAL_QUOTA_DATA quota; 
    } 
    return self; 
} 
@end 

は、だから私の問題は、私はそう...それは間違っていORIGINAL_QUOTA_DATA quota;ですNetWorkConnect.mで構造体を呼び出す方法は?

+1

エラーメッセージは何ですか? –

+0

hmmm、なぜあなたは再投稿しますか? http://stackoverflow.com/questions/7439575/iphone-how-to-call-struct-in-different-file完全に同じ質問をしている場合は、質問の編集を調整し、新しい質問を投稿することはできません。 – kjiyoung

+0

@kjyoung私は彼に話しかけた。私は実際にやった。 MODにフラグが立てられているので、これを直ちに修正する必要があります。 – MPelletier

答えて

1

initメソッドではなく、NetWorkConnectのヘッダーファイルでクォータを宣言します。次に、他のインスタンス変数と同様に、すべてのインスタンスメソッドからアクセスできるインスタンス変数になります。

あなたが置く場合:

#import "ManageMarketPacket.h" 
// ... 

@interface ManageMarketPacket : NSObject {   
    ORIGINAL_QUOTA_DATA quota; 
    // ... 
} 

NetWorkConnect.h

に、あなたは(INITを含む)NetWorkConnect.mに他の方法でそれを参照することができるようになります。

- (id)init{ 
    if (self==[super init]) { 
     quota.id = 1; 
     quota.exch = 'A' 
    } 
    return self; 
} 

-(void) updateMyQuote:(int)quotaId exch:(char) quotaExch { 
     quota.id = quotaId; 
     quota.exch = quotaExch; 
} 

-(void) doSomethingElseWithQuota { 
     if (quota.id != someOtherId) { 
      quota.exch = 'F'; 
     } 
} 
+0

ありがとう、あなたのコードでこの問題を解決しました – Gaojian922188

0

structインスタンスはinitメソッドブロックに対してローカルなので、他の場所ではアクセスできません。あなたがそれにアクセスしてそれを使って遊びたいブロックにそれを宣言してください。クラス全体にアクセスする場合は、2番目の.mファイルのインタフェースで宣言します。

関連する問題