将一个对象中的数组设置为等于另一个对象中的数组?

时间:2017-06-24 23:42:26

标签: c++ arrays class

假设我有一个名为A的课程:

class A{
private:
    int myarray[3];
    int other;
public:
    void setarray(int cell_one, int cell_two, int cell_three);
    // ^ Sets values passed to function to elements in myarray 
}

我的主要有两个A对象:

int main(){
A a_one;
A a_two;

a_one.setarray(5,3,6);

}

有没有办法将a_one中的数组复制到a_two中的数组中,而不设置其他值相等?

3 个答案:

答案 0 :(得分:1)

我建议改用std::array。然后,您可以通过简单的赋值实现复制。

例如,您可以创建一个函数,该函数返回对数组的(可能的const)引用,并使用这些函数进行赋值。也许像是

struct A
{
    std::array<int, 3> a;
    // Other member variables...

    std::array<int, 3> const& get_array() const
    {
        return a;
    }

    std::array<int, 3>& get_array()
    {
        return a;
    }
};

// ...

a_one.get_array() = a_two.get_array();

答案 1 :(得分:0)

嗯,有明显的方法 - 制作一个可以调用的方法:

public:
   void setArrayFromA(const A & him)
   {
      for (int i=0; i<3; i++) myarray[i] = him.myarray[i];
   }

[...]

a_one.setArrayFromA(a_two);

答案 2 :(得分:0)

班级定义:

class A{
private:
 std::array<int,3> myarray;
 int other;
public:
 void setarray(int cell_one, int cell_two, int cell_three);
 // ^ Sets values passed to function to elements in myarray 
}

然后您可以将其设置为:

int main(){
 A a_one;
 A a_two;

 a_one.setarray(5,3,6);
 a_two.myarray = a_one.myarray;    
}