测试我的代码时,使用 cout 作为我的类运算符会导致运算符错误

问题描述 投票:0回答:1

我收到此错误:

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

c++ operator-keyword
1个回答
0
投票

如果我们让它变得更简单,你基本上就在做

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
© www.soinside.com 2019 - 2024. All rights reserved.