2011-06-22 10 views
2

以下のコードをベースクラスに持ちます。私はself->baseVal_を使用して変数を呼び出すか、私は派生クラスで定義されたプロパティを削除した場合、その後、すべてがOKであれば派生クラスがプロパティを持つ場合の宣言されていない変数

以下のコードでは、しかし、コンパイルエラーに
...abcAppDelegate.m:30: error: 'baseVal_' undeclared (first use in this function)

を与えます。

また、派生クラスのカテゴリを定義すると、エラーなしでbaseVal_にアクセスできます。

//--------------------------------------------------------------- 
// BASE CLASS 
//--------------------------------------------------------------- 

@interface BaseClass : NSObject 
{ 
@protected  
    BOOL baseVal_; 
} 
@end 

@implementation BaseClass 
@end 

//--------------------------------------------------------------- 
// DERIVED CLASS 
//--------------------------------------------------------------- 

@interface DerivedClass : BaseClass { 
} 
@property (readwrite) BOOL val; 
@end 

@implementation DerivedClass 
@synthesize val; 
- (void) foo { 
    baseVal_ = YES; 
} 
@end 
+0

App Delegateでは、DerivedClassではなくエラーが発生しているようです。この変数にアクセスしているAppDelegateコードを投稿できますか? – hundreth

+0

上記の例では、appDelegate.mファイルにクラス(上記の正確なコード)を貼り付けましたが、例はより大きいコードベースから取られています –

+0

BTW:Objective-Cにはメンバ変数がありますが、インスタンス変数。 – bbum

答えて

0

Clickをご覧ください。おそらくGCCのバグだと思われますが、それを使わずにインスタンス変数としてvalを追加することで簡単に解決できます。

+0

は、プロパティのメンバーを追加するか、self-> valを使用してアクセスするかのどちらかで解決できます。 –

+0

より良い解決策は、LLVMに切り替えることです。 – bbum

関連する問題