如何强制/自动使用C ++ setter方法? (比如ObjC)

时间:2016-01-06 18:54:39

标签: c++ objective-c variables syntax setter

Objective-C中,当对实例的值使用简单的增量(@properties)调用时,可以使用运行setter方法的++(由实现指定)那个财产。这是一个例子......

@import Foundation;

@interface Z : NSObject 
@property (nonatomic) int intVar; 
@end

@implementation Z

- (void) setIntVar:(int)i {
    printf("intVar is now %i.\n", _intVar = i); 
    // I could do other things here, too.
}
@end

int main() { Z *z = Z.new; z.intVar++; }
  

intVar is now 1.

我是C++的新手,但是(目前尚未找到)使用class“成员变量”重新创建此行为的方法。例如......

#include <iostream>

class X {

    public:
        void setIntVar(int x) { printf("setting intvar to: %i\n", _intVar = x); }
        int _intVar;
};

X instanceOfX;

int main() {

    instanceOfX._intVar++;
    printf("X's intvar is %i\n", instanceOfX._intVar);
    instanceOfX.setIntVar(instanceOfX._intVar + 1);
}
  

X's intvar is 1

     

setting intvar to: 2

差异是微妙的,但我只是想知道是否有办法强制设置增量(或设置,甚至),而不会使变量变为私有。

0 个答案:

没有答案