我在下面有以下代碼,其中基類具有(應該可以)由派生類訪問的成員。當派生類具有屬性時,從基類中未聲明的變量
下面的代碼但是給人一種編譯錯誤
...abcAppDelegate.m:30: error: 'baseVal_' undeclared (first use in this function)
如果我打電話使用self->baseVal_
的變量,如果我刪除在派生類中定義的屬性,則一切正常。
此外,如果我定義派生類的類別,那麼我可以訪問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
看起來你在應用程序委託中出錯,而不是DerivedClass。你可以在你訪問這個變量的地方發佈AppDelegate代碼嗎? – hundreth
只是爲了這裏的例子,我將類(上面的確切代碼)插入到appDelegate.m文件中 - 但是該示例取自一個較大的代碼庫 –
BTW:Objective-C沒有成員變量,但實例變量。 – bbum