【C++】求助,无法解析的外部符号

    技术2023-10-03  109

    【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; }

    问题:运行代码时出现以下错误 提示“无法解析的外部符号”,我自己实在是找不出语句错误,最近写的代码经常出现这样的错误,这样的错误对于新手来说好像不是特别友好,本人对动态内存、指针、等知识还在学习,所以遇到这样的错误请各路大神帮帮忙,感谢了。

    Processed: 0.017, SQL: 9