错误:无法匹配运营商<<

时间:2014-02-27 12:06:31

标签: c++ struct

我正在接受C ++和课程的培训。我的项目由两个文件组成:

  • 的main.cpp
  • Date.h

的main.cpp

using namespace std;

#include <iostream>
#include<Windows.h>
#include  "Date.h"

main(){
  Date date1;
  Date date2;
  cout<<"Type first date: ";
  date1.setAll();
  cout<<"type second date: ";
  date2.setAll();

  cout<<First date: "<<date1.getS();
  cout<<Second date: "<<date2.getS();
}

Date.h

class Date{
public:
  Date(){}
  ~Date(){system("pause");}
  void setAll();
  struct dmy{
    int day, month, year;
  };
  dmy c;
  dmy getS();
private:
  void setDay();
  void setMonth();
  void setYear();
};

void Date::setAll(){
  setDay();
  setMonth();
  setYear();
}

//all set ...

Date::dmy Date::getS(){
  return c;
}

我在主要的

中遇到错误
cout<<"First date: "<<date1.getS();

错误消息以

开头
Error: no match for 'operator<<' in std::operator<<

此错误意味着什么,我该如何解决?

由于我们学校的PC上有互联网限制,我无法直接复制错误信息,这是DevC ++中错误信息的屏幕:

errors

2 个答案:

答案 0 :(得分:4)

ostream课程没有为operator<<重载struct dmy。因此它不知道如何打印该值。在不重载运算符的情况下,您需要的是:

Date::dmy date = date1.getS();
cout<<"First date: "<< date.year << "." << date.month << "." << date.day;

答案 1 :(得分:1)

date1.getS()实际上返回结构Date::dmy。要使代码编译,您应该为operator<<

重载Date::dmy