我写了以下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]'
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
你不能在c ++中使用=运算符复制整个数组。你有两个选择。
使用这样的for循环将一个数组的每个元素复制到另一个数组
for(int i = 0; i&lt; 12; i ++) 薪金[I] =阵列[I];
在另一个注释中,不要在代码中使用像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)
但是你可能会在分配的内存和段错误之外引用一些东西。 使用矢量!