我收到此错误:
main.cpp: In function ‘int main()’:
main.cpp:14:36: error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream’ and ‘void’)
14 | std::cout << "Date format 1: " << myDate.dateFormat_1();
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~ ~~~~~~~~~~~~~~~~~~~~~
| | |
| std::basic_ostream<char> void
我不确定如何解决这个问题。我是 C++ 新手,目前正在学习 C++ 硕士课程,创建类系统一直很混乱。成员函数 dateFormat_2 和 3 没有导致任何问题,也没有在编译器中提示错误,所以我有点确定它们是正确的。任何帮助将不胜感激。
这是我的主要
#include <iostream>
#include <string>
#include "Date.h"
int main()
{
int d;
int m;
int y;
std::cout << "Input three integers for day, month, year: ";
std::cin << d << m << y;
Date myDate
std::cout << "\nDay: " << myDate.getDay() << "\nMonth: " << myDate.getMonth() << "\nYear: " << myDate.getYear() << std::endl;
std::cout << "Date format 1: " << myDate.dateFormat_1() << std::endl;
std::cout << "Date format 2: " << myDate.dateFormat_2() << std::endl;
std::cout << "Date format 3: " << myDate.dateFormat_3() << std::endl;
}
这是我的标题
#include <iostream>
#include <string>
class Date
{
public:
Date(int d, int m, int y)
{
day = d;
month = m;
year = y;
}
void setDay(int d)
{
day = d;
}
int getDay()
{
return day;
}
void setMonth(int m)
{
month = m;
}
int getMonth()
{
return month;
}
void setYear(int y)
{
year = y;
}
int getYear()
{
return year;
}
void dateFormat_1()
const{
std::cout << day << "/" << month << "/" << year;
}
void dateFormat_2()
const{
std::string day_s;
std::string month_s;
if(day<10)
{
day_s = '0' + std::to_string(day);
}
else
{
day_s = day;
}
if(month<10)
{
month_s = '0' + std::to_string(month);
}
else
{
month_s = month;
}
std::cout << day_s << "/" << month_s << "/" << year;
}
void dateFormat_3()
{
std::string day_s;
std::string month_s;
if(day<10)
{
day_s = '0' + std::to_string(day);
}
else day_s = day;
if(month<10)
{
month_s = '0' + std::to_string(month);
}
else month_s = month;
std::cout << year << month_s << day_s;
}
private:
int day, month, year;
};
如果我们让它变得更简单,你基本上就在做
std::cout << myDate.dateFormat_1();
这会调用函数
myDate.dateFormat_1()
并尝试输出它返回的值。但是 myDate.dateFormat_1()
不会返回任何内容,因此您会收到错误。
你想要的只是一个简单的函数调用:
std::cout << "Date format 1: "; // Output heder text
myDate.dateFormat_1(); // Call function, and it will write its own output
std::cout << '\n'; // Output a trailing newline