问题标签 [derived-class]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ Boost序列化序列化模板派生类
我想将具有属性的类序列化为泛型类上的指针列表
这是泛型类派生的父类:
通用类:
我要序列化的类
因此,在阅读了 boost 序列化文档(http://www.boost.org/doc/libs/1_43_0/libs/serialization/doc/serialization.html#derivedpointers)之后,我在序列化代码中尝试了这个:
我收到一条消息,
错误:“模板”(作为消歧器)只允许在模板中使用
,所以我换了
oa.template register_type >();
经过
oa.register_type();
它有效,我已经能够以文本和二进制格式保存(我检查了数据)
现在加载,我只使用了这些行:
它给我一个错误:
错误:没有匹配函数调用 'GenericBase::GenericBase()'
有人告诉我,我必须像此示例http://www.boost.org/doc/libs/1_43_0/libs/serialization/doc/serialization.html#constructors中那样覆盖 2 种保存和加载方法
但是我必须在哪里定义它们?在 Use 类的声明中?以及如何与会员打交道
?
感谢您的帮助 ;)
c# - 从基类对象问题访问派生类
我有一种奇怪的情况......
我在 WPF 中有一个用户控件,而女巫又附加了一些其他用户控件,然后我有一个巨大的 C# 代码文件,其中包含一个需要访问用户控件 UI 元素和方法的大算法,这个漏洞过程与计时器一起使用它将数据从用户控件发送到 C# 代码文件算法,它需要从控件返回和更新 UI 元素,还需要访问它的方法......
现在的问题是我不想把这个庞大的算法放在我的控件的代码隐藏文件中,而是我想访问控件的 UI 元素并从该代码文件中声明方法......
到目前为止,我尝试的是从我使用的用户控件中实际派生代码文件的类,这工作得很好而且很花哨,但是要访问派生类,我需要创建它的一个新对象并且我显示的 UI 没有得到更新,因为它还创建了一个新的基类对象,我相信......
所以我有类似的东西:
所以我的问题是:如何在不实例化它的新对象的情况下调用派生类,因为这将导致创建新的用户控件对象并且显示的 UI 将不会更新......或者如果我不派生算法类,我有什么可能访问用户控件元素和方法?
c# - C#派生类,重载决议
好的,我有一些从基类派生的不同对象,我已经将它们中的一堆放在了一个列表中。我想遍历列表并将每个推送到一个方法。我对每个人的类型签名都有单独的方法,但是编译器在抱怨。有人可以解释为什么吗?这是使用泛型的机会吗?如果是,如何使用?
...
...
...
我究竟做错了什么?
c# - 派生类作为返回值
鉴于这些 C# 类(由 WCF 生成,我无法更改这些):
我的代码(当前):
我的问题:我一直觉得我遗漏了一些明显的东西,我不需要明确检查类型。我有高级的时刻吗?
python - 将基类转换为派生类python(或扩展类的更多pythonic方式)
我需要扩展 Networkx python 包并向Graph
类添加一些方法以满足我的特殊需要
我考虑这样做的方式是简单地派生一个新类 sayNewGraph
并添加所需的方法。
然而,networkx 中还有其他几个函数可以创建和返回Graph
对象(例如生成随机图)。我现在需要将这些Graph
对象转换为NewGraph
对象,以便我可以使用我的新方法。
这样做的最佳方法是什么?还是我应该以完全不同的方式解决问题?
c++ - c ++处理自引用的派生类
所以假设我在 C++ 中有一个像这样的树类
现在,每当我访问 specialTree 中的子项时,我显然得到的是 Node*,而不是 specialNode*。
但是这个 specialNode* 有 Node 没有的成员变量和函数。
我可以强制 specialNode 只将 specialNode 作为子节点,否则会中断编译时间,但在访问子节点/父节点时我仍然会得到 Node*,并且每当我想使用特殊函数时,我都必须强制转换它,即使在 specialNode 函数中也是如此。
有什么聪明的,或者更好的方法来解决这个问题吗?除了每次都按字面意思投射?
c++ - 使用声明(派生类)
是因为,B1::fb()
被视为B1::fb(B1*)
and B2::fb()
被视为B2::fb(B2*)
?也就是说,隐式参数是否有助于区分这些?
$13.3.1/4-
对于通过 using 声明引入派生类的非转换函数,为了定义隐式对象参数的类型,该函数被认为是派生类的成员。
c++ - 继承的典型问题
可能重复:
为什么在 C++ 中不允许这样做?
为什么在 C++ 中不允许这样做...??
我收到一个错误
我的问题是,由于 func() 在派生类中定义为public并且语句 ((derived *)ptr)->func(); 正在尝试显示派生的 func() ..为什么由于继承模式而存在可访问问题..尽管派生类中已经有公共派生 func() ,但继承模式(私有)如何影响调用.. ?
如果将继承模式更改为公共,我会得到我想要的结果。但是如果 func() 在 base 中是私有的(因此 base 的 func() 不是继承的)并且 func() 在派生和模式中也是公共的继承是公开的,为什么我仍然得到我想要的结果..我应该像前一种情况一样收到编译错误吗?
我很困惑..请告诉我编译器在这种情况下是如何工作的..??
python - 派生的python对象的深拷贝
我在 python 中有一个对象,它派生自QtGui.QGraphicsPixmapItem
一些基本属性和方法。在调用deepcopy
对该对象的引用后,我收到一条错误消息,指出underlying C/C++ object has been deleted
当我尝试使用副本时。我之前收到过这个错误,它发生在我没有调用基类的构造函数时,__init__
所以我认为这个错误是因为QtGui.QGraphicsPixmapItem
没有被复制。
我该如何指定这个?我所知道的是有一种__deepcopy__
方法可以达到这个目的。
c++ - 非虚推导:我从编译器中真正得到了什么?
我想知道使用非虚拟派生时编译器会产生什么:
这里的推导是否只意味着编译时检查?还是有其他开销?
我注意到我的编译器在直接使用Point2
or时会产生同样大小的对象Point<2>
。我推断推导不会产生 vtable,因此,永远不会进行虚拟调用。
我错过了什么吗?
语境
我想为给定的类模板提供几个预定义的特化。我从 typedefs 开始:
唉,这会阻止客户端使用“简单”的前向声明:
然后必须编写这段相当不直观的代码:
这就是我放弃 typedef 并使用非虚拟派生的原因。不过,我想知道所有的含义是什么。
(另一种策略是在专用头文件中编写一次前向声明,à la #include <iosfwd>
。)