C++ 方法包装 Objective-C : how to add value to variable?

标签 c++ objective-c webkit node-webkit

好的,这是一个完全菜鸟的问题:

我有简单的 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赋值,因为它是对常量对象的引用。

关于C++ 方法包装 Objective-C : how to add value to variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21789891/

相关文章:

c++ - 我是否需要在所有绘图代码之后重复 glOrtho 调用?

objective-c - 为什么根类的元类的父类(super class)不是 NULL 指针?

javascript - UIWebView 中出现奇怪的 WebKit 错误 - 这可以被捕获吗?

ios - 如果先前已加载某些网页,WKWebView 不会加载 .archive 文件

c++ - 为什么我的 SetBookTitle 不存储字符串

c++ - 运算符重载和继承

c++ - 这是 operator<</>> 的正确实现吗?

ios - 如果 TextField 为空,则设置自定义文本

objective-c - 让 NSFetchedResultsController、NSSortDescription 和 sectionNameForKeyPath 协同工作

CSS:返回后悬停状态保持事件状态(Firefox)