当派生类具有属性时,来自基类的未声明的变量

时间:2011-06-22 18:53:09

标签: iphone objective-c xcode4

我在下面有下面的代码,其中一个基类有一个成员,它应该是派生类可以访问的。

但是下面的代码给出了编译错误 ...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

1 个答案:

答案 0 :(得分:0)

看看这里:Click。似乎可能是GCC的一个错误,但可以通过添加val作为实例变量而不是使用没有的属性来轻松修复。