gpt4 book ai didi

c++ - 在 C++ 中将数组设置为已初始化的传入数组

转载 作者:太空宇宙 更新时间:2023-11-04 15:45:49 25 4
gpt4 key购买 nike

请原谅这个非常基本的问题,但作为一个 Java 程序员,这个 C++ 错误可以说并不完全是“点击”。

我想在一个函数中创建和初始化一个数组,然后将该数组传递给另一个函数。在接收函数中,我想访问传入数组的元素。

作为(缩写的)示例:

class demo{
main() {
int members[] = { 1, 2, 3, 4, 5 };
example.function(members);
}
}

这会将数组 members 传递给以下函数:

class example {
int members[];

void function(int mem[]) {
members = mem;
}
}

这给了我错误:

error: incompatible types in assignment of ‘int*’ to ‘int [0]’

我希望 example.members[] 等于 demo.members[]。我明白为什么我在 example.function 中得到一个 int*,但不知道如何在 class example 中设置数组>.

最佳答案

只需以 C++ 方式执行,并使用 std::vector:

#include <vector>

class example {
std::vector<int> members;

void function(std::vector<int> const& mem) {
members = mem;
}
};

在 C++11 中,当提供 rvalue 时,您可以避免复制(例如:ex.function({1, 2, 3}))通过让 function() 按值获取其参数,然后将其移至数据成员中:

#include <vector>

class example {
std::vector<int> members;

void function(std::vector<int> mem) {
members = std::move(mem);
}
};

关于c++ - 在 C++ 中将数组设置为已初始化的传入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16723126/

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