0

我遇到了一个使用 tinyxml2 无法解决的问题。

我有一个接收参数 a 的函数,XMLElement我需要遍历它的属性。使用 tinyxml,这有效:

void xmlreadLight(TiXmlElement* light){
    for (TiXmlAttribute* a = light->FirstAttribute(); a ; a = a->Next()) {
         //Do stuff
    }
}

对 tinyxml2 使用相同的方法,如下例所示,我收到以下错误:

类型的值const tinyxml2::XMLAttribute *不能用于初始化类型的实体tinyxml2::XMLAttribute *

void xmlreadLight(XMLElement* light){
    for (XMLAttribute* a = light->FirstAttribute(); a ; a = a->Next()) {
         //Do stuff
    }
}

有问题的 XML 代码是:

<lights>
   <light type="POINT" posX=-1.0 posY=1.0 posZ=-1.0 ambtR=1.0 ambtG=1.0 ambtB=1.0 />
</lights>

其中 light 是XMLElement传递给函数的xmlreadLight。不确定我的问题是否正确设置,因此如果缺少某些信息,请告诉我。

4

1 回答 1

2

根据错误消息,您似乎需要执行以下操作:

for (const XMLAttribute* a = light->FirstAttribute(); a ; a = a->Next()) { ...
     ^^^^^

FirstAttribute想必是在tinyxml2中做了返回类型const


如果您检查 Github 存储库中第tinyxml2.h1513 行的文件,您将看到:

/// Return the first attribute in the list.
const XMLAttribute* FirstAttribute() const {
    return _rootAttribute;
}
于 2021-05-23T23:33:04.180 回答