我在Visual C++ Express 2010中使用PugiXML。 此代码有效。 但是当我在 Xcode 中使用它时。 它给了我一个错误,即"调用成员函数'''set_value'是不明确的"。任何身体都可以帮助解决它,或者为什么它会在 Xcode 中给我带来错误。
for (size_t k = 0; k < num; ++k) {
for (size_t v = 0; v < height; ++v) {
if(width==2){
pugi::xml_node weightNode = weightsNode.append_child("Test_Output");
weightNode.append_attribute("No").set_value(k);
weightNode.append_attribute("index1").set_value(v);
weightNode.append_attribute("index2").set_value(v); //as 1x2 case first value position is (0x0)
weightNode.append_attribute("value").set_value(networks[k][6][0].at<double>(v,v));
weightNode.append_attribute("index1").set_value(v);
weightNode.append_attribute("index2").set_value(v+1);
weightNode.append_attribute("value").set_value(networks[k][6][0].at<double>(v,v+1));
}else{
for (size_t u = 0; u < width; ++u) {
pugi::xml_node weightNode = weightsNode.append_child("Output");
weightNode.append_attribute("No").set_value(k);
weightNode.append_attribute("index1").set_value(v);
weightNode.append_attribute("index2").set_value(u);
weightNode.append_attribute("value").set_value(networks[k][6][0].at<double>(v,u));
weightNode.append_attribute("index1").set_value(v);
weightNode.append_attribute("index2").set_value(u);
weightNode.append_attribute("value").set_value(networks[k][6][0].at<double>(v,u));
}
}
}
}
任何机构都可以查明为什么它在 Xcode 中给出错误。 但是它在Visual C ++中可以正常工作。
谢谢
根据文档,有几种类型的重载set_value
:
bool set_value(const char_t* rhs);
bool set_value(int rhs);
bool set_value(unsigned int rhs);
bool set_value(double rhs);
bool set_value(bool rhs);
但不适用于size_t
,除非它恰好是unsigned int
的别名。
您需要将k
和v
的类型更改为 unsigned int
,或者在调用 set_value
时强制转换。如果您需要支持无法用 unsigned int
表示的非常大的值,那么您需要一个更好的库。