int 函数C++可以返回类似 "NULL" 的东西?
C++ can an int function return something like "NULL"?
我有一个计算某些东西的函数,如果结果无效,我想返回类似"NULL"的内容。我已经找到了使用指针的方法,但是有更简单的方法可以做到这一点吗?
这实际上取决于函数的语义。如果函数的协定是它将向用户返回int
,并且由于某种原因它无法这样做,那么您的函数应该引发异常。如果函数的协定是它将向用户返回int
或不返回任何内容,则可能需要使用 boost::optional
。
NULL 的类型为 void*,因此它不能只传递给 int,但您也可以执行以下操作:
#define NOT_FOUND -1
或者只是一些你不使用的数字。
另外,正如@juanchopanza指出的那样,您可以抛出异常
通过以下方式使用事件驱动编程: 枚举或#defines
设置返回码:
(警告这是一个非常幼稚的例子)
#define GOOD_INPUT 10001
#define BAD_INPUT 10002
int test_function() {
std::string str;
std::cout << "Enter a string:" << std::endl;
std::cin >> str;
if (!str.empty()) {
return GOOD_INPUT;
}
else {
return BAD_INPUT;
}
}
稍后,您可以检查一切是否顺利:
int rtn_code = test_function();
if (rtn_code == BAD_INPUT) {
//something went wrong: say or do something.
}
相关文章:
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 如何在 c++ 中'NULL'字符串
- c++使用foreach使数组为null
- 当使用通配符和null指针调用函数时,对输出的说明
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 如何在映射中返回null
- 为什么返回 NULL 不会破坏函数?
- 构造函数中的 QQuickItem 父项 null
- 检查字符串是否"null" C++
- fopen 在 gdb 中返回 NULL
- what(): basic_string::_M_construct null not valid
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 为什么要从main()返回NULL?
- 为什么 nlohmann/json 序列化 "null" 而不是在 double 上"0"?
- 当目标指针不是基类的类型时,为什么允许dynamic_cast为多态类生成 null 指针?
- 是否有通用方法可以找到任何以 null 结尾的字符串的长度?
- 为什么TinyXML2的XMLDocument::FirstChild()函数在尝试解析这个有效的XML文件时返回NULL?
- 使用 curl_easy_cleanup(curl) 时收到未经处理的 NULL 异常
- ClassTemplateSpecializationDecl 的定义数据为 null