c ++数组到数组赋值

时间:2014-10-17 19:56:59

标签: c++ arrays

我写了以下employee课程:

#include<iostream>
#include<string>
using namespace std;

class employee
{
    private:
        int id;
        int salaries[12];
        int annualS;
        string name;

    public:
        employee(int id2, string name2, int array[12])
        {
            id = id2;
            name=name2;
            salaries = array; //here where the error occurred.
        }
        ~employee()
        {
            cout<<"Object Destructed";
        }

        employee()
        {
            id = 0;
            name="Mhammad";
        }

        int annulalSalary()
        {
            for( int i=0; i<12; i++)
            {
                annualS+=salaries[i];
            }
            return annualS;
        }
        int tax()
        {
            return (annualS*10/100);
        }
};

void main()
{
    int salaries[12];
    for(int i=0; i<12; i++)
    {
        cin>>salaries[i];
    }

    employee Mohammad(10,"Mohammad",salaries);

    cout<< Mohammad.annulalSalary();
    cout<< Mohammad.tax();
}

...但是当我编译它时,编译器返回以下错误:

cannot convert from 'int []' to 'int [12]'

有人可以帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:0)

你不能在c ++中使用=运算符复制整个数组。你有两个选择。

  1. overload =运算符 或
  2. 使用这样的for循环将一个数组的每个元素复制到另一个数组

    for(int i = 0; i&lt; 12; i ++)     薪金[I] =阵列[I];

  3. 在另一个注释中,不要在代码中使用像12这样的幻数。

答案 1 :(得分:0)

使用C ++ std::array<>代替C数组,如下所示:

class employee {
    //...
    std::array<int, 12> salaries;
    //...
};

当然,您也必须包含<array>。并声明构造函数如下:

employee(int id2, string name2, std::array<int, 12> const & array)
{
    //...
}

(如果您不确定他们是什么或不需要,请放弃const &。)

答案 2 :(得分:0)

您无法按分配复制数组。您需要单独复制每个元素。使用std::copy

std::copy(array, array+12, salaries);

或按照Borgleader的建议使用std::vector<int>std::array<int, 12>,并按作业进行复制。

答案 3 :(得分:-1)

使用矢量类!

但要解决你的问题:

int salaries[12]应为int* salaries employee(int id2, string name2, int array[12])应为employee(int id2, string name2, int* array)

但是你可能会在分配的内存和段错误之外引用一些东西。 使用矢量!