小编wan*_*esy的帖子

奇怪的指针行为 C++/继承

我目前正在使用指针,我想知道我是否正在做一些根本不起作用的事情。

对于某些背景,我创建了一个基类和一个派生类。这个派生类继承了一些成员变量和这些变量的一些获取/设置函数。这个派生类还实现了两个从基类继承的纯虚函数。

现在在包含与这些类交互的代码的主文件中,我有三个函数,分别称为 f1、main 和 f2。

F1 创建派生类的实例并返回指向该派生类的基类指针。在这个类F1中,我检查了int成员变量是否被设置为正确的数字,我还检查了派生类继承的虚函数是否正确实现。变量和函数都在 F1 范围内设置/正常工作。

Main 接收指向这个派生类的这个基类指针。在这个 main 函数中,我再次检查 int 成员变量是否设置为正确的数字,并且我还检查了派生类继承的虚函数是否正确实现。变量和函数都在主作用域中设置/正常工作。

但是,当我将指针作为基类指针参数传递给函数 F2 时。int 成员变量被设置为 0,当我访问虚拟函数时,我收到一个分段错误/核心转储错误。

为了进一步缩小原因,我访问了派生类实现文件,并在实现文件中创建了一个对象实例,并看到一切都按预期工作。

总而言之,我有一个指向派生类对象的基类指针。函数调用在创建它的函数和返回到的函数中完美地适用于这个指针。只有当指针作为基类指针的参数传递时,我才开始看到成员变量设置为 0 并且函数调用导致分段错误/核心转储。

我正在尝试做一些 C++ 不允许的事情吗?感谢任何人可以给我的任何帮助。

编辑:我在下面附上了代码。生物是基本情况;Goblin 是派生的 Case;功能 F1:

Creature* characterSelect()
{
    Creature* creature;
    Goblin gb1 = Goblin();
    creature = &gb1;
    return creature;
}
Run Code Online (Sandbox Code Playgroud)

c++ inheritance pointers

1
推荐指数
1
解决办法
319
查看次数

标签 统计

c++ ×1

inheritance ×1

pointers ×1