gpt4 book ai didi

c++ - 试图将复杂数组存储到类 C++ 中

转载 作者:行者123 更新时间:2023-11-28 03:09:13 26 4
gpt4 key购买 nike

我不是很擅长 C++,想知道为什么数组内部的数组会发生错误,但对于普通数组却能正常工作(以及如何修复它)。

代码如下(只是试图在构造类时将数组存储在类中):

class foo {
int* stored;
public:
foo(int* ptr) {
stored = ptr;
}
};

int main() {
int arr[][2] = {{1,4},{5,7},{2,5}};
foo obj(arr);
}

当数组类似于 int arr[] = {1,2,3} 时,它可以正常工作,但正常代码会给我这个错误:

error: no matching function for call to 'foo::foo(int [3][2])'

我搜索了一段时间,但我真的不知道首先要搜索什么,这就是我在这里问的原因(但我觉得它与指针有关)。感谢您的帮助。

最佳答案

您尝试将整数数组的数组作为单个整数指针传递,但这是行不通的。虽然数组在传递时确实会衰减为指针,但数组数组不能是单个指针,也不能是指向指针的指针。

但是它可以用作指向数组的指针:

class foo
{
int (*stored)[2];

public:
foo(int (*ptr)[2]) : stored(ptr) {}
};

声明中的括号是必需的,否则它将是一个指针数组。

但是,我建议不要使用原始数组,而是转到 std::vectorstd::array ,当然可以嵌套:

std::vector<std::array<int, 2>> arr = {
{{ 1, 2 }},
{{ 3, 4 }}
};

关于c++ - 试图将复杂数组存储到类 C++ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18938931/

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