0

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++ では正しく動作します。

ありがとう

4

1 に答える 1

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ます。

kと の型をに変更するか、 を呼び出すときにキャストする必要がvありunsigned intますset_value。で表現できない非常に大きな値のサポートが必要な場合unsigned intは、より優れたライブラリが必要になります。

于 2014-01-14T14:52:13.767 に答える