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

0

Хорошо, это общий вопрос о нобе:

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

2 ответа

1

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

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

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

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

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

0

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

iconpos = [[NSString stringWithFormat: @"%f,%f", rect.origin.x, rect.origin.y] UTF8String];
  • 0
    по-прежнему та же ошибка: :-( ../../content/nw/src/api/tray/tray_mac.mm:72:11: error: no viable overloaded '=' iconpos = [[NSString stringWithFormat: @"%f,%f", rect.origin.x, rect.origin.y] UTF8String]; ~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • 0
    Как насчет этого: iconpos.assign([[NSString stringWithFormat: @"%f,%f", rect.origin.x, rect.origin.y] UTF8String]); ?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню