为什么 "<<" 会报错, 没有与这些操作数匹配的<<操作符,输出d.day()或者d.year(),也不是输出定义的数据

//头文件just.h

enum class Month
{
jan = 1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec
};

class Date
{
public:
Date(int y, Month m, int d);
Month month() { return m; }
int day() { return d; }
int year() { return y; }
private:
int y ;
Month m ;
int d ;
};

Date::Date(int y, Month m, int d)
{

}

//cpp文件
// ones.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include "pch.h"
#include
#include"just.h"
#include"std_lib_facilities.h"
using namespace std;

int main()
{
Date d{ 2000, Month::jun, 12 };
cout << d.month() << '\n';
}

你都用了enum class 了你觉得的

给你个代码片 ,直接把上面的东西放在单文件里了 你看下

#include <iostream>

using namespace std;

enum class Month : int 
{
    jan = 1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec
};

class Date
{
    public:
        Date(int v_year, Month v_month, int v_day) :
        m_year(v_year),m_month(v_month),m_day(v_day){};

        Month get_month() { return m_month; }
        int get_day() { return m_day; }
        int get_year() { return m_year; }
    private:
        int m_year ;
        Month m_month ;
        int m_day ;
};

int main()
{
    Date m_date{ 2000, Month::jun, 12 };
    cout << static_cast<int>(m_date.get_month()) << endl;
    cout << m_date.get_day() << endl;
    cout << m_date.get_year() << endl;
}

const ostream& operator<<(ostream& out, const Array& arr)
{
for (int i = 0; i < arr.m_length; i++) {
out << arr.m_datas[i] << ",";
}
out << endl;
return out;
}

void Testarr()
{
    Array arr1(10);
    arr1[0] = 10;
   // arr1[1] = 10;
    cout << arr1 << endl;
}
输出的时候第二个<<报错了
严重性   代码  说明  项目  文件  行 禁止显示状态
错误(活动)  E0349   没有与这些操作数匹配的 "<<" 运算符    Re_Load D:\C++\Re_Load\Re_Load.cpp  73  

https://en.cppreference.com/w/cpp/language/enum

请看示例代码,重载<<运算符之后才可以打印enum class。

https://en.cppreference.com/w/cpp/language/enum

请看示例代码,重载<<运算符之后才可以打印enum class。