gpt4 book ai didi

c++ - 如何在 std::function 中存储虚拟成员函数?

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:56 24 4
gpt4 key购买 nike

class foo
{
public:
foo(void)
{
this->f = std::bind(&foo::doSomething, this);
}

private:
virtual void doSomething(void) { }

private:
std::function<void(void)> f;
}

class bar : public foo
{
public:
bar(void) { /* I have no idea what I have to */ }

private:
virtual void doSomething(void) override { }
}

我想将覆盖的“doSomething”函数分配给“foo::f”。但我不知道如何分配覆盖的“doSomething”功能。或者我只是编写一些代码来为每个类分配“doSomething”函数?

class foo
{
public:
foo(void)
{
this->f = std::bind(&foo::doSomething, this);
}

private:
virtual void doSomething(void) { }

private:
std::function<void(void)> f;
}

class bar : public foo
{
public:
bar(void)
{
this->f = std::bind(&bar::doSomething, this);
}

private:
virtual void doSomething(void) override { }
}

该代码是我对问题的回答。但我想我可以自动将虚函数分配给 std::function 。

最佳答案

this->f = std::bind(&foo::doSomething, this);

这很好用。通过指针或引用传递对象将允许它调用正确的虚函数。

关于c++ - 如何在 std::function 中存储虚拟成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35787752/

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