Обёртывание метода C ++ Objective-C: как добавить значение в переменную?

ОК, это общий вопрос:

У меня есть простой метод 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];
~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0

Решение

Во-первых, если вы собираетесь конвертировать NSRect в NSString ты наверное хочешь NSStringFromRect,

Однако, если вы хотите отформатировать его самостоятельно, в std::stringто зачем преобразовывать его в NSString просто чтобы преобразовать его снова в std::string?

Во-вторых, вы пытаетесь назначить iconpos которая является ссылкой на const std :: string. Ты просто не можешь этого сделать.

Если вы хотите конвертировать из NSString к std::string вам нужно будет пройти через обычную строку C, с NSString метод cStringUsingEncoding:,

Однако независимо от того, что вы делаете, вы не можете назначить iconpos потому что это ссылка на постоянный объект.

1

Другие решения

Вы должны попробовать что-то вроде этого:

iconpos = [[NSString stringWithFormat: @"%f,%f", rect.origin.x, rect.origin.y] UTF8String];
0

По вопросам рекламы [email protected]