为什么我不能将一个 Xalan 类的static_cast使用到它的基类?
Why can't I use a static_cast from one Xalan class to its base class?
为什么编译器(g++)抱怨这行代码?
XalanNode *docElement = static_cast<XalanNode*> (docBuilder_->getDocument()->getDocumentElement());
我从编译器得到的错误是:
错误:从类型"amxalanc_1_6::XalanElement*"到类型"amxalanc_1_6::XalanNode*"的static_cast无效
如果没有static_cast,编译器将打印:
错误:无法在初始化中将"amxalanc_1_6::XalanElement*"转换为"amxalanc_1_6::XalanNode*"
XalanElement 类定义为:
class XALAN_DOM_EXPORT XalanElement : public XalanNode
文档还显示 XalanNode 应该派生自 XalanElement,正如你在这里看到的 - XalanElement 类参考。
在 XalanDocument.hpp 中,getDocumentElement() 的方法签名是:
virtual XalanElement* getDocumentElement() const = 0;
大多数 Xalan 标头只对它们未定义的类使用前向声明,即使它们声明的函数接受或返回指向这些类的指针。(这是常见且良好的做法。
为了让编译器看到XalanElement
是从XalanNode
派生的事实,您需要显式#include
定义XalanElement
的标头。
相关文章:
- std::具有相同基类的类的变体
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 基类中的函数名称解析
- C++初始化基类
- 如何通过派生类函数更改基类中的向量
- 如何定义一个纯抽象基类
- 如何使用基类指针引用派生类成员
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何引用基类的派生类?
- 如果基类包含双指针成员,则派生类的构造函数
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 为什么此派生对象无法访问基类的后递减方法?
- 公开最直接的基类模板名称
- 当基类是依赖类型时,这是一个缺陷吗
- 如何使基类的运算符对基类的可变参数数可见(请参阅下面的代码)?
- 模板基类中的静态变量
- C++ 继承:将子类传递给需要基类的函数并获取子类行为
- 使用派生到基类的 boost 序列化"unregistered void cast"