【C++】求助,在类中用运算符重载实现对整形数组的自增运算
题目:定义一维数组类 Array,成员数组使用动态内存。重载自增和(前置、后置)实现数组元素的自增
(1)私有数据成员: int *p; // 表示一维数组 int n; // 一维数组的大小
(2)公有成员函数: 构造函数:初始化数据成员;拷贝构造函数、重载前置自增的成员函数 重载后置自增的成员函数;void print():输出数组成员的函数; 析构函数:释放动态内存;若有必要可增加其它成员函数。
(3)以数组“{1,2,3,4,5,6,7}”对所定义的类进行测试,要求输出数组元素的自增和自减(前 置、后置)情况。
具体代码:
#include<iostream>
using namespace std;
class Array {
public:
Array() { p = 0, n = 0; }
Array(int p[], int n);
Array(Array&);
Array& operator++();
Array operator++(int);
Array& operator=(Array&);
friend Array& operator--(Array&);
friend Array operator--(Array&,int);
void Print();
~Array();
private:
int* p;
int n;
};
Array::Array(int p[], int n) { //构造函数
this->n = n;
if (this->p)
delete[]this->p;
this->p = new int[this->n];
int i= 0;
while (i < n) {
this->p[i] = p[i];
i++;
}
}
Array& Array:: operator=(Array& ar) {
n = ar.n;
p = new int[ar.n];
for (int i = 0; i < n; i++) {
p[i] = ar.p[i];
}
return *this;
}
Array& Array::operator++() { //前置运算符++重载函数
int i = 0;
while (i < n) {
p[i]++;
i++;
}
return *this;
}
Array Array::operator++(int) { //后置运算符++重载函数
Array temp=(*this);
++(*this);
return temp;
}
void Array::Print() { //输出函数
for (int i = 0; i < n; i++) {
cout << p[i] << ",";
}
cout << endl;
}
Array::~Array() { //析构函数
cout << "析构函数被调用" << endl;
if (p)
delete[]p;
}
//主函数
int main() {
int a[] = { 1,2,3,4,5,6,7 };
int n = sizeof(a) / sizeof(int);
Array ar(a, n),temp;
++ar;
ar.Print();
temp.Print();
return 0;
}
问题:运行代码时出现以下错误
提示“无法解析的外部符号”,我自己实在是找不出语句错误,最近写的代码经常出现这样的错误,这样的错误对于新手来说好像不是特别友好,本人对动态内存、指针、等知识还在学习,所以遇到这样的错误请各路大神帮帮忙,感谢了。