0

请原谅这个非常基本的问题,但作为一个 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[]。我明白为什么我得到一个int*in example.function,但不知道如何设置数组 in class example

4

3 回答 3

3

只需使用 C++ 方式,然后使用std::vector

#include <vector>

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

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

在 C++11 中,您可以在提供右值时避免复制(例如 in: ex.function({1, 2, 3})),方法是让其function()按值获取参数,然后将其移动到数据成员中:

#include <vector>

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

    void function(std::vector<int> mem) {
        members = std::move(mem);
    }
};
于 2013-05-23T20:19:59.360 回答
2

将私有成员变量更改example::members为 type int *

class Example {
    int *members;

    void function(int *mem) {
        members = mem;
    }
}

void main () {
    int array[] = { 1, 2, 3, 4, 5 };
    Example ex;
    ex.function(array);
}
于 2013-05-23T20:25:34.917 回答
1

不能直接赋值正则数组,如果真的要使用正则数组,需要循环执行。

尝试改用std::vectoror std::arraystd::array 文档)。

例如:std::vector方式:

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

   void function(const std::vector<int>& mem) {
      members  = mem;
   }
}
于 2013-05-23T20:20:08.020 回答