gpt4 book ai didi

c++ - 如何在 C++ 中返回函数类型以外的数据类型?

转载 作者:行者123 更新时间:2023-11-28 05:27:55 25 4
gpt4 key购买 nike

我正在尝试构建一个用于练习搜索算法的树,我需要访问一个空指针以确保特定节点在创建时为空...但是,我无法弄清楚如何获得一个从 T& 类型函数返回的空指针。现在我将 nullptr 定义为标准

int * key = 0;

需要访问并返回一个nullptr的函数是

T& getData() { ... }

我研究了隐式转换,但我不确定这是否是正确的方法,甚至不确定如何进行。此外,知道我必须在单个头文件中构建所有内容并且不能更改主文件可能会很有用。提前感谢任何可以帮助我理解如何处理这个问题的见解!

最佳答案

返回T& 的函数必须返回对T 的引用,并且引用不能为NULL。因此,您不能返回 NULL - 您实际上必须 return *NULL;,这显然是无效的。

您有几个选择:

  1. T& 转换为 T*。然后您可以返回 NULLnullptr。我建议避免将 0 作为 NULL 的符号,因为它可能会造成混淆。
  2. 抛出异常。如果 getData() 应该 返回对数据的引用,则可以公平地假设获取不存在的数据(为其提供引用)是未定义的行为/一个错误,可以这样处理。
  3. 根据 T 实际上是什么(这真的是一个模板,还是 T 只是简写?),您可以为该类型创建一个“NullType”。例如,您可能有一个 Data 是一个 DataInterface,而 NullData 是一个 DataInterface
  4. 在一些非常极少数情况下,返回对某种“死”数据(想想/dev/null)的引用是一种选择。我怀疑是在这种情况下,因为您可能想知道返回的值是无效的;但是,在绝对必须返回数据而您没有数据的情况下,在这些情况下创建要返回的静态对象可能是与错误报告配对的技巧。

我想说您唯一特别好的选择是您已排除的选项,#1。

关于c++ - 如何在 C++ 中返回函数类型以外的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40162030/

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