好的,这是一个完全菜鸟的问题:
我有简单的 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/