gpt4 book ai didi

c++如何在原始抽象类中创建一个接受派生类输入的函数

转载 作者:太空宇宙 更新时间:2023-11-04 12:43:40 24 4
gpt4 key购买 nike

假设我有一个名为 Turtle 的抽象类。在类中,我在自己的线程上有一个函数,它接受 Turtle 的输入。编译器说我不能使用抽象类型 Turtle 的输入。我想要发生的是函数接受派生类的输入,而不是抽象的 Turtle 类。我应该如何解决这个问题?

#include <thread>

class Turtle
{
std::thread T_thread;
public:
virtual void foo(Turtle T) = 0;

//tried making this virtual as well
void do_stuff(Turtle T)
{
foo(T);
}

Turtle()
{
T_thread = std::thread(do_stuff, this);
}
};

最佳答案

如果 Turtle 是抽象数据类型,那么您不能声明这种类型的变量。但是您可以声明一个变量,其数据类型是指向该类型的指针或引用。

在方法的签名中使用对 Turtle 的引用:

void do_stuff(Turtle &T)

传递给 do_stuff 的实际参数的动态类型永远不能是 Turtle 类型,因为它是抽象的,但它可以是这样的类型派生自 Turtle(如果派生类也不是抽象的)。

关于c++如何在原始抽象类中创建一个接受派生类输入的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52803552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com