gpt4 book ai didi

c++ - 如何在不显式设置、不显式删除和不使用静态函数的情况下使对象指针为 NULL?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:07 26 4
gpt4 key购买 nike

我正在开发一个 C++ 应用程序。 在我的代码中,我有一个对象指针 TestClass *pObj = new TestClass(); 和成员函数调用,如 pObj->close(); 在 close() 成员函数中,我应该使 pObj 为 NULL。 根据我们的要求,TestClass 用户不应该在 pObj 上调用 delete。(为了这个目的,TestClass 的析构函数是私有(private)的) 此外,TestClass 不应公开任何静态方法来接收指针并将其设为 NULL。

有没有其他方法可以在调用 close() 后使 pObj 为 NULL?

我试过一种方法。 在 close() 函数中,我使用 const_cast 删除了该指针的常量性。 并引用了它。 然后我做了这个= NULL。 即使在调用端,pObj 指针值仍然存在。它没有设置为 NULL。 可能是因为this指针的Address和pObj的Address不一样。 请帮忙。

编辑:抱歉,我错过了一些东西。 new 在名为 init 的静态函数中被调用。初始化函数如下所示。 void init(TestClass *& pObj);所以TestClass用户首先调用init进行分配。但是他不能调用deinit(应该没有这样的函数) 其实这不是我的设计。当我进入这个项目时它就存在了:(

最佳答案

想象一下这样的代码:

TestClass *ptr1 = new TestClass();
TestClass *ptr2 = ptr1;
ptr2->close();

您想将哪个指针设置为空?在 close 方法中,您不知道有多少指针指向您的对象以及如何访问 close 方法。

关于c++ - 如何在不显式设置、不显式删除和不使用静态函数的情况下使对象指针为 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3509556/

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