gpt4 book ai didi

c++ - 如何在堆栈上创建多态对象?

转载 作者:可可西里 更新时间:2023-11-01 17:04:14 25 4
gpt4 key购买 nike

如何在堆栈上分配多态对象?我正在尝试做类似的事情(试图避免使用新的堆分配)?:

A* a = NULL;

switch (some_var)
{
case 1:
a = A();
break;
case 2:
a = B(); // B is derived from A
break;
default:
a = C(); // C is derived from A
break;
}

最佳答案

你不能构造一个函数来像那样工作,因为在条件 block 内创建的自动或临时对象不能将它们的生命周期延长到包含 block 中。

我建议将多态行为重构为一个单独的函数:

void do_something(A&&);

switch (some_var)
{
case 1:
do_something(A());
break;
case 2:
do_something(B()); // B is derived from A
break;
default:
do_something(C()); // C is derived from A
break;
}

关于c++ - 如何在堆栈上创建多态对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974158/

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