Code bị lỗi "is not declared in this scope"

Mọi người ơi mình sai chỗ nào mà code bị Sapxep is not declared in this scope

#include <iostream>
using namespace std;

class DATE {
private:
    int day, month, year;

public:
    DATE() {
        day = month = year = 0;
    }

    DATE(int d, int m, int y) {
        day = d;
        month = m;
        year = y;
    }

    void nhap() {
        char bf, cf;
        cin >> day >> bf >> month >> cf >> year;
    }

    void in() {
        cout << day << "/" << month << "/" << year;
    }


    void reset(int d, int m, int y) {
        day = d;
        month = m;
        year = y;
    }
    int dayIns(){
    	int nd;
    	switch(month){
    		case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    			nd = 30;
    			break;
    		case 4: case 6: case 9: case 11:
    			nd = 31;
    			break;
    		case 2:
    			if((year%400 == 0) || (year%4==0 && year!=0))
    				nd =29;
    			else
    				nd =28;
		}
		return(nd);
	}
	void normalize(){
		while(month>12){
			month -=12;
			year ++;
		}
		while(day>dayIns()){
			day -=dayIns();
			month++;
			if( month>12){
				month = 1;
				year++;
				
			}
		}
	}
	//neu d2 nho hon ngay hien tai
	int operator- (DATE d2){
		int nd =0;
		while(day!=d2.day || month!= d2.month || year!=d2.year){
			nd++;
			d2.day++;
			d2.normalize();
		}
		return(nd);
	}
	
void Sapxep(DATE *p, int n) {
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++)
            if ((p + i)->year > (p + j)->year||(p + i)->month > (p + j)->month||(p + i)->day > (p + j)->day) {
                DATE tmp = * (p + j);
                *(p + j) = * (p + i);
                *(p + i) = tmp;
            }
    }}
};

int main() {
   DATE d;
   
    cout << "Ngay vua khai bao: ";
    d.in();

    DATE d1(25, 9, 2023);
    cout << endl << "Ngay hien tai: ";
    d1.in();
    d1.reset(300, 50, 2024);
    cout << endl << "So ngay cua d1: " << d1.dayIns();
    d1.normalize(); 
    cout << endl << "Ngay dung cua d1 se la: ";
    d1.in();
    cout << endl << "So ngay ngay hien tai se la: " << d1.operator-(DATE(18, 5, 2024));
    
    //Sap xep ngay thang
    cout<<endl<<"DAY NGAY CAN DUOC SAP XEP";
    cout<<endl<<"hay nhap so ngay can duoc sap xep: ";
    int n;
    cin>>n;
    DATE *p = new DATE[n];
   for(int i=0; i<n; i++){
		cout<<endl<<"Nhap phan so thu "<<i+1<<" : ";
		p[i].nhap();}
	cout<<endl<<"Day ngay da duoc sap xep vua nhap: ";
	Sapxep(p,n);
	for(int i=0;i<n;i++){
		(a+i)->in();
		cout<<" ";
}

	
}

Code của bạn trông khá là khó nhìn nên mình phải chép vào CodeBeautify để cho dễ nhìn đây này
Hàm SapXep đang ở trong scope của class Date nên nó sẽ báo lỗi vì không được gọi từ một đối tượng Date

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?