如果我有一个生成结果int和结果string的函数,我如何从一个函数返回它们?

据我所知,我只能返回一个东西,这是由函数名前面的类型决定的.

推荐答案

我不知道你的string是什么,但我假设它管理自己的内存.

你有两种解决方案:

1:返回struct,其中包含您需要的所有类型.

struct Tuple {
    int a;
    string b;
};

struct Tuple getPair() {
    Tuple r = { 1, getString() };
    return r;
}

void foo() {
    struct Tuple t = getPair();
}

2:使用指针传递值.

void getPair(int* a, string* b) {
    // Check that these are not pointing to NULL
    assert(a);
    assert(b);
    *a = 1;
    *b = getString();
}

void foo() {
    int a, b;
    getPair(&a, &b);
}

您 Select 使用哪种语义在很大程度上取决于个人偏好,即您更喜欢哪种语义.

C++相关问答推荐

librsvg rsvg_handle_get_dimensions获取像素大小与浏览器中的渲染大小没有不同

如何通过Zephyr(Devicetree)在PR Pico上设置UTE 1?

ISO_C_BINDING,从Fortran调用C

从C函数调用asm函数时生成错误的BLX指令(STM32H753上的gcc)

在32位处理器上优化53—32位模计算>

将 typewriter LF打印到Windows终端,而不是隐含的CR+LF

数据包未从DPDK端口传输到内核端口

如何在C中从函数返回指向数组的指针?

以前版本的tty_ldisc_ops.ioctl()是否也需要文件参数?

无法用C++编译我的单元测试

C:fopen是如何实现二进制模式和文本模式的?

在C中将通用字符名称转换为UTF-8

CSAPP微型shell 实验室:卡在sigprocmask

如何将字符**传递给需要常量字符指针的常量数组的函数

错误Cygwin_Except::Open_stackdupfile:正在转储堆栈跟踪是什么?

如何将另一个数组添加到集合中,特别是字符串?

C-try 将整数和 struct 数组存储到二进制文件中

从整型转换为浮点型可能会改变其值.

计算SIZE_MAX元素的长数组的大小

子进程不会修改父进程中的统计信息