gpt4 book ai didi

C++ 对象指针和作用域

转载 作者:行者123 更新时间:2023-11-28 00:31:40 25 4
gpt4 key购买 nike

我对 C++ 的 OO 方面比较陌生,所以请原谅这个问题,我认为这个问题比较简单;

我有一些代码,大致像这样

SuperClass* super;

if (useSub1())
{
SubClass1 sub1 (s);

super = &sub1;
}
else if (useSub2())
{
SubClass2 sub2 (s);

super = &sub2;
}

super.someMethod();

应该注意的是,这里的要点是“sub”的构造取决于对 someFunction() 的调用结果。此外,将有多个 if (...) { } 构造,如上所示,每个构造基于某些条件基于父类(super class)的不同子类创建不同的对象。

总而言之,SuperClass 有许多子类,我想根据 if 条件创建适当的对象类型,然后使用“super”对象来操作它们。

这是我的问题,我认为通过执行我拥有的 sub1(或 sub2)会超出范围,所以这是否让我没有指向任何内容的指针?

我希望我想做的事情相当清楚,我只是不确定如何正确编码。非常感谢收到任何帮助或建议。

感谢期待

最佳答案

根据您问题中的信息阅读创建模式:工厂或工厂方法可能适合您的需求。

该设计模式允许在堆中动态创建对象,并且您可以使用指向基类的指针来操作创建的对象。

为了防止内存泄漏和正确处理资源,我建议您使用智能指针: std::unique_ptr<Type>boost::shared_ptr<Type>
如果您打算使用 std::auto_ptr,请不要将其与容器一起使用

关于C++ 对象指针和作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22666355/

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