C++ C++;方法C:如何为变量添加值?
好的,这是一个完全没有问题的问题:C++ C++;方法C:如何为变量添加值?,c++,objective-c,webkit,node-webkit,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获
我有简单的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];
~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
您应该尝试以下方法:
iconpos = [[NSString stringWithFormat: @"%f,%f", rect.origin.x, rect.origin.y] UTF8String];
首先,如果要将
NSRect
转换为NSString
,您可能需要NSStringFromRect
但是,如果您想自己将其格式化为std::string
,那么为什么要将其转换为NSString
,只是为了再次将其转换为std::string
第二,您正试图分配给iconpos
,这是对const std::string的引用。你不能那样做
如果要从NSString
转换为std::string
,则需要使用NSString
方法cStringUsingEncoding:
检查常规C字符串
但是,无论您做什么,都不能将其分配给iconpos,因为它是对常量对象的引用。仍然是相同的错误:-(
。/../content/nw/src/api/tray/tray\u mac.mm:72:11:错误:没有可行的重载“=”iconpos=[[NSStringWithFormat:@%f,%f],rect.origin.x,rect.origin.y]UTF8String];~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/code>这个怎么样:iconpos分配([[NSSTRINGWithFormat:@%f],%f],rect.origin.x,rect.origin.origin;
?。/../content/nw/src/api/tray/tray\u mac.mm:73:11:错误:没有匹配的成员函数用于调用'assign'iconpos.assign([[NSString stringWithFormat:@“%f,%f”,rect.origin.x,rect.origin.y]UTF8String])~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/MacOSX.platform/Developer/sdk/MacOSX10.8.sdk/usr/include/c++/4.2.1/bits/basic\u string.h:927:7:注意:候选函数不可行:“此”参数的类型为“const std::string”(也称为“const basic\u string”),但方法未标记为const assign(const CharT*\u s)^1生成错误。ninja:build stopped:子命令失败。
正如Jody Hagins指出的,您正在尝试分配一个常量引用。请从标头声明中删除“const”。