30/09/2018, 20:37
Sửa lỗi đoạn code sai khi gọi hàm
Đoạn code của e khai báo mảng A cấp phát động, nhưng khi gọi hàm e đưa mảng A vào thì báo lỗi:
Error 1 error C2664: ‘void InterchangeSort(int [],int)’ : cannot convert argument 1 from ‘Data1 *’ to ‘int []’
Error 2 IntelliSense: argument of type “Data1 *” is incompatible with parameter of type “int *”
Giúp e sửa lỗi với ạ?
#include <iostream>
using namespace std;
class Data1{
private:
int x;
static int assignment_count;
static int n;
public:
friend ostream& operator<<(ostream &os, const Data1& a);
friend istream& operator>>(istream &os, Data1& a);
static void set_n(int n){
if (Data1::n == 0) Data1::n = n;
else cout << "WRONG";
}
Data1& operator=(const Data1& a){
assignment_count++;
if (assignment_count > 3 * Data1::n){
cout << "WRONG";
}
this->x = a.x;
return *this;
}
bool operator<(const Data1& a){
return this->x < a.x;
}
};
int Data1::assignment_count = 0;
int Data1::n = 0;
ostream& operator<<(ostream &os, const Data1& a){
return os << a.x;
}
istream& operator>>(istream &os, Data1& a){
return os >> a.x;
}
void InterchangeSort(int A[], int n)
{
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if (A[i]>A[j])
swap(A[i], A[j]);
}
int main(){
int n;
cin >> n;
Data1::set_n(n);
Data1 *A = new Data1[n];
for (int i = 0; i < n; i++){
int x;
cin >> A[i];
}
InterchangeSort(A, n);
for (int i = 0; i < n; i++){
cout << A[i] << " ";
}
}
Bài liên quan
khai báo hàm nhận đầu vào kiểu int[] pass dữ liệu Data[]
Gõ Data nó k nhận, báo lỗi rùm ben hơn nữa a