首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义对`mtm::operator<<(std::ostream&,mtm::DateWrap const&)‘的引用

未定义对`mtm::operator<<(std::ostream&,mtm::DateWrap const&)‘的引用
EN

Stack Overflow用户
提问于 2021-01-07 22:24:58
回答 1查看 53关注 0票数 0

我一直收到这个错误,我不知道为什么。

未定义对`mtm::operator<<(std::ostream&,mtm::DateWrap const&)‘的引用

我不得不使用所有这些名称空间,这是家庭作业,但我仍然不知道如何使用这些名称空间,这将真的很有帮助!

date_wrap.h:

代码语言:javascript
复制
#ifndef DATE_WRAP_H
#define DATE_WRAP_H

#include <iostream>

extern "C" {   

#include "date/date.h"    }  
namespace mtm {


class DateWrap{
    Date date;

    public:
    DateWrap(int day, int month, int year);
    DateWrap(const DateWrap& date2);
    ~DateWrap();
    int day() const;
    int month() const;
    int year() const;
    DateWrap operator++(int);
    DateWrap& operator+=(int num);
    friend std::ostream& operator<<(std::ostream& os, const DateWrap&);
    bool operator==(const DateWrap& date1) const;
    bool operator>(const DateWrap& date1) const; };

std::ostream& operator<<(std::ostream& os, const DateWrap&);
 bool operator!=(const DateWrap& date1, const DateWrap& date2);
 bool operator<=(const DateWrap& date1, const DateWrap& date2);
 bool operator>=(const DateWrap& date1, const DateWrap& date2);
 DateWrap operator+(DateWrap& date ,int num);
 DateWrap operator+(int num, DateWrap& date);
    

#endif //DATE_WRAP_H }

date_wrap.cpp:

代码语言:javascript
复制
ostream& operator<<(ostream& os, const DateWrap& date){
    return os << date.day() << "/" << date.month() << "/" << date.year();
}

main.cpp:

代码语言:javascript
复制
#include <iostream>
#include "date_wrap.h"
using std::cout;
using std::endl;
using mtm::DateWrap;

int main(){
    DateWrap date(30, 11, 2020);
    cout << date << endl; // output: "30/11/2020"
    cout << date + 4 << endl; // output: "4/12/2020"
    cout << 3 + date << endl; // output: "3/12/2020"
    date++;
    cout << date << endl; // output: "1/12/2020"
    date += 7;
    cout << date << endl; // output: "8/12/2020"
    cout << (date > DateWrap(29, 11, 2020)) << endl; // output: "1"
    cout << (date <= DateWrap(29, 11, 2020)) << endl; // output: "0"
    cout << (date == DateWrap(30, 11, 2020)) << endl; // output: "0"
    date += (-3); // throw exception NegativeDays
    date = date + (-3); // throw exception NegativeDays
    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2021-01-07 22:28:43

这并不难,应该很难

代码语言:javascript
复制
namespace ntm {

    ostream& operator<<(ostream& os, const DateWrap& date){
        return os << date.day() << "/" << date.month() << "/" << date.year();
    }

}

代码语言:javascript
复制
ostream& ntm::operator<<(ostream& os, const DateWrap& date){
    return os << date.day() << "/" << date.month() << "/" << date.year();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65614182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档