问题标签 [object-slicing]

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.

0 投票
3 回答
67265 浏览

python - 选择最后 n 列并排除数据框中的最后 n 列

我如何能:

  1. 选择数据框中的最后 3 列并创建一个新的数据框?

我试过了:

  1. 排除最后 3 列并创建一个新的数据框?

我试过了:

这个对吗?

我的代码中进一步出现数组维度错误,并希望确保此步骤正确。

谢谢

0 投票
3 回答
2191 浏览

c++ - 将引用转换为共享指针

我有一个像

这是通过传递派生类来调用的。

我遇到的麻烦是我想将节点存储在向量中。我有这个

和函数为

这不起作用,我必须将其存储为指针,否则我会遇到对象切片。我需要更改 API 并传递指针吗?我想尽可能少地改变。

0 投票
2 回答
2656 浏览

c++ - c ++防止std :: vector中的对象切片

我想将具有相同基类的多个类存储在std::vector. 经过一些研究,我发现我必须使用指针来防止对象切片。但是,当我创建向量、向其添加元素并返回它时,生成的向量没有正确的值。

例如,这是我的两个类:

这是一个简单的print功能。作为一项规则,应该有的所有实例,以及Base应该有的所有var0 == 23实例。Derivedvar0 != 23

首先,这确实像我想要的那样工作:

这打印:

现在,我希望这个向量由一个函数返回,所以我创建了一个函数:

这打印:

不是我想要的。我希望它像其他功能一样打印。

有没有办法解决这个问题?有什么办法可以让整个派生类的事情做得更好一点吗?

0 投票
0 回答
22 浏览

c++ - 继承还是对象切片?

我已经阅读了很多关于此的内容,但无法弄清楚为什么我的Player对象失去了它的draw功能。

对象类:

球员等级:

当我运行此代码时:

输出是:Object draw。我希望它是Player draw这样的,对象要么不被覆盖,要么对象在通过函数时被切片。

0 投票
4 回答
416 浏览

c++ - 为什么可以“模板void f(T& t)" 覆盖 T 中的函数但 "templatevoid f(T t)" 不能吗?

我有一个类 A 和子类 B,并且想制作一个模板函数来调用 A 和 B 的虚函数:

它仅打印 A 并且似乎不会覆盖 test(),但是当我更改时

像那样:

,它打印 B,为什么会发生这种情况?

0 投票
2 回答
826 浏览

c++ - 用于保存子对象的父类对象的动态数组

我有一个Mammal家长班。 Dog, Cat,Lion是子类。

我正在使用向量来保存所有子类作为Mammal对象

并使用这条线将新对象附加到向量中。

显然它不起作用。Error no instance of overload function在编译期间抛出给我。我是 C++ 新手,所以我不确定动态创建父类数组以保存所有子对象的正确方法是什么

0 投票
1 回答
317 浏览

c++ - 带有迭代器和继承的 STL 容器

这是一个示例 C++ 问题,用于找出结果。

我期望的输出是“1 4 1 4”,但正确答案是“1 4 1 3”。

从上面,

即,x[0] 只不过是指向 A 类型对象的指针,调用 f() 返回 1。

即,x[1] 只不过是指向 A 类型对象的指针(指向派生类对象的基类指针)并调用返回 (3 + 1) = 4 的派生类 f()

我不确定当我们将对象 a 和 b 添加到向量容器中并通过具有继承的 const_iterator 迭代它们时它的行为如何

我可以理解这一点,因为 i 只是指向第一个元素即对象 a 的指针。

但是这里会发生什么?

我的理解是它指向序列中的下一个元素,即对象 b 并通过派生类指针调用 f() 应该调用其成员函数而不是基类的?

0 投票
2 回答
895 浏览

python - 熊猫,具有多个条件的切片多索引df

这个问题是pandas re-indexing with missing dates的延续

我想计算最近 3 个月(2015-12、2015-11、2015-10)的值的总和。如果股票没有足够的数据,即 3 个月中没有、1 或 2 个,那么我希望该总和的值为 NaN。

我可以按和求和进行分组,但这并没有给我我想要的,因为它可能排除了在这三个月期间没有任何数据的股票,然后不考虑有 1 或 2 的股票个月。

我想我需要一个 multi loc 语句,但我已经修补过并且无法获得我想要的结果。

0 投票
1 回答
81 浏览

c++ - 对象切片:从基类对象访问派生类方法

编辑

  1. 问题出在GoFish.h文件中,具体来说是在构造函数中,它试图实例化玩家对象。

  2. 编译器抛出以下错误消息:“Player”中没有名为“noOfBooks”的成员

对于初学者来说,对象切片似乎是 OOP 中最模糊的概念之一。我一直在用 C++ 开发这款纸牌游戏,我有一个名为Player的基类和一个名为GoFishPlayer的派生类。当尝试访问引用回 Player 对象的 GoFishPlayer 对象的方法时,程序倾向于切掉派生类的特定方法和属性,从而使其成为基对象的克隆。有没有办法克服这个问题?

游戏.h

抽象类 Game :它构成了这两个游戏的基础 - GoFish 和 CrazyEights

GoFish.h

派生类 GoFish - 当我尝试实例化从游戏类派生的 Player 对象时,问题出现在构造函数中

播放器.h

GoFishPlayer.h

0 投票
1 回答
190 浏览

c++ - 使用 CRTP 时的对象切片

使用 CRTP 时,我遇到了对象切片问题。以下模拟说明了我的问题。

编译上面的代码给我以下错误:

我希望能够将 CrtpDirv1 和 CrtpDirv2 类转换为 CrtpGenr。这样我就可以定义一个 CrtpGenr 类型的容器来保存 CrtpDirv1 或 CrtpDirv2 的对象。我究竟做错了什么?