Я хотел бы написать программу на языке C ++ таким образом, чтобы я мог написать:
class foo
{
public:
foo()
{
bar = "Hello world";
}
std::string bar;
};
Затем (ниже в том же файле .mm) я мог бы создать экземпляр этого класса, а затем сделать что-то вроде:
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *myLabel;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
foo* thisWontWork = new foo();
self.myLabel.text = foo.bar; //this doesn't work obviously
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
что бы эффективно изменить текст метки «myLabel» на «Hello world»
Это должно работать:
self.myLabel.text = @(foo->bar.c_str());
Который конвертирует std::string
в const char *
в NSString
,
Но обратите внимание: вы протекаете foo
, так:
@interface ViewController ()
{
foo _foo;
}
@property (weak, nonatomic) IBOutlet UILabel *myLabel;
@end
и использовать:
self.myLabel.text = @(_foo.bar.c_str());
Других решений пока нет …