gpt4 book ai didi

c++ - 从 Lambda 中调用虚拟父保护函数

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

如何在 protected 时使用 lambda 调用虚父函数?

template<typename T>
class Parent
{
protected:
virtual int Show()
{
std::cout<<"Parent::Show Called\n";
}
};

class Child : Parent<Child>
{
protected:
virtual int Show() final override
{
std::cout<<"Child::Show Called\n";

//supposed to be in a thread in my original code.
auto call_parent = [&] {
//Parent<Child>::Create(); //call other parent functions..
Parent<Child>::Show();
};

call_parent();
}
};

我得到的错误是:

错误:“int Parent::Show() [with T = Child]”在此上下文中受到保护

有什么想法吗?我在 Windows 上使用 GCC/G++ 4.8.1。

最佳答案

作为解决方法,您可以调用 Parent<Child>::Show()通过蹦床功能:

class Child : Parent<Child>
{
int trampoline() {
return this->Parent<Child>::Show();
}
protected:
virtual int Show() final override
{
std::cout<<"Child::Show Called\n";
auto call_parent = [&] {
this->trampoline();
};
call_parent();
return 0;
}
};

关于c++ - 从 Lambda 中调用虚拟父保护函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27761329/

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