ОК, это общий вопрос:
У меня есть простой метод C ++:
void Tray::IconPos(const std::string& iconpos) {
NSRect rect = [[[status_item_ view] window] frame];
iconpos = [NSString stringWithFormat: @"%f,%f", rect.origin.x, rect.origin.y];
}
где я хочу std::string& iconpos
чтобы получить это: [NSString stringWithFormat: @"%f,%f", rect.origin.x, rect.origin.y]
значение.
Как мне это сделать здесь?
Ниндзя дает мне:
tray_mac.mm:72:11: error: no viable overloaded '='
iconpos = [NSString stringWithFormat: @"%f,%f", rect.origin.x, rect.origin.y];
~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Во-первых, если вы собираетесь конвертировать NSRect
в NSString
ты наверное хочешь NSStringFromRect
,
Однако, если вы хотите отформатировать его самостоятельно, в std::string
то зачем преобразовывать его в NSString
просто чтобы преобразовать его снова в std::string
?
Во-вторых, вы пытаетесь назначить iconpos
которая является ссылкой на const std :: string. Ты просто не можешь этого сделать.
Если вы хотите конвертировать из NSString
к std::string
вам нужно будет пройти через обычную строку C, с NSString
метод cStringUsingEncoding:
,
Однако независимо от того, что вы делаете, вы не можете назначить iconpos
потому что это ссылка на постоянный объект.
Вы должны попробовать что-то вроде этого:
iconpos = [[NSString stringWithFormat: @"%f,%f", rect.origin.x, rect.origin.y] UTF8String];