为什么编译器 (g++) 会提示这行代码?
XalanNode *docElement = static_cast<XalanNode*> (docBuilder_->getDocument()->getDocumentElement());
我从编译器得到的错误是:
error: invalid static_cast from type `amxalanc_1_6::XalanElement*' to type `amxalanc_1_6::XalanNode*'
Without the static_cast, the compiler prints:
error: cannot convert `amxalanc_1_6::XalanElement*' to `amxalanc_1_6::XalanNode*' in initialization
The XalanElement class is defined as:
class XALAN_DOM_EXPORT XalanElement : public XalanNode
文档还显示 XalanNode 应该派生自 XalanElement,如您在此处所见 - XalanElement Class Reference .
在 XalanDocument.hpp 中,getDocumentElement() 的方法签名是:
virtual XalanElement* getDocumentElement() const = 0;
最佳答案
大多数 Xalan header 仅对它们未定义的类使用前向声明,即使它们正在声明接受或返回指向这些类的指针的函数。 (这是常见的良好做法。)
为了让您的编译器看到 XalanElement
派生自 XalanNode
这一事实,您需要显式地#include
定义 的 header XalanElement
.
关于c++ - 为什么我不能使用从一个 Xalan 类到它的基类的 static_cast?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12633301/