c++ - 为什么我不能使用从一个 Xalan 类到它的基类的 static_cast?

标签 c++ xalan static-cast

为什么编译器 (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/

相关文章:

.net - 通过 c++/cli 层从 c++ dll 使用 .net dll 时出现问题

java - 如何在 XSL 函数 'document()' (xalan-j) 中禁用 DTD 验证

c++ - 为什么 std::forward 返回 static_cast<T&&> 而不是 static_cast<T>?

c++ - 强制转换为 void* 以将对象传递给 C++ 中的 pthread

c++ - 将迭代器设置为具有最高键的值

c++ - C++ 中缺少标准化命名约定 "standard"

xslt - 将 Xalan 与 Saxon 一起使用

xml - 复杂的 XML XSLT 查询,如 SQL 连接

c++ - 是否定义了 static_cast<int>(myUnsignedLongVar) 实现?

c++ - 查找文件夹中所有文件的文件路径