Leaves.XY 2022-04-01 16:49 采纳率: 100%
浏览 25
已结题

我的C++的类份文件编写编译错误,想不通错在哪

问题遇到的现象和发生背景

C++的类份文件编写编译错误,想不通错在哪

img

问题相关代码,请勿粘贴截图

主函数:
#include
#include "Time.h"
#include "Date.h"

using namespace std;

void display(Date& d,Time &t)

{
cout << d.month << "/" << d.day << "/" << d.year << endl;
cout << t.hour << ":" << t.minute << ":" << t.sec << endl;

}

int main()

{
Time t1(10, 13, 56);
Date d1(12, 25, 2004);
display(d1, t1);
system("pause");
return 0;
}

第一个分文件:
#pragma once
#include
#include "Date.h"

using namespace std;

//class Date

class Time
{
public:
Time(int, int, int);
friend void display(Date& d, Time& t);
private:
int hour;
int minute;
int sec;

};
Time::Time(int h, int m, int s)
{
hour = h; minute = m; sec = s;
}

第二个分文件:
#pragma once
#include
#include "Time.h"

using namespace std;

//class Time;

class Date

{
public:

Date(int, int, int);


friend void display(Date& d, Time& t);

private:

int month;

int day;

int year;

};
Date::Date(int m, int d, int y)

{

month = m; day = d; year = y;

}

运行结果及报错内容
我的解答思路和尝试过的方法

img


第二个分文件加上第一个类的声明就能运行
但是我寻思着我已经引用了第一个类的头文件,为什么还要加上声明呢

我想要达到的结果
  • 写回答

1条回答 默认 最新

  • Dana_ranmo 2022-04-01 17:10
    关注

    类的定义和声明是两种东西,如果你类里面的函数定义为static,则可以把该类当作命名空间使用,否则就算定义了也得声明才能够对该对象进行操作
    可以参考:
    https://download.csdn.net/download/Dana_ranmo/85055723

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 已采纳回答 4月18日
  • 创建了问题 4月1日

悬赏问题

  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在