对成员函数set_value的错误调用是不明确的(在使用pugixml库的xcode中)

时间:2014-01-14 14:33:17

标签: c++ xcode pugixml

我在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 ++中正常工作。

感谢

1 个答案:

答案 0 :(得分:2)

根据documentation,有几种类型的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的别名。

您需要将kv的类型更改为unsigned int,或在调用set_value时进行转换。如果您需要支持unsigned int无法表示的非常大的值,那么您需要一个更好的库。