#include <iostream> using namespace std; class Date; class Time {public: Time(int,int,int); void display(Date&); private: int hour; int minute; int sec; }; class Date {public: Date(int,int,int); friend void display(Date & d); private: int month; int day; int year; }; Time::Time(int h,int m,int s) {hour=h; minute=m; sec=s; } Date::Date(int m,int d,int y) {month=m; day=d; year=y; } void Time::display(Date &d) {cout<<d.month<<'.'<<d.day<<','<<d.year<<endl; cout<<hour<<':'<<minute<<':'<<sec<<endl;} int main() {Time t1(10,13,56); Date d1(12,25,2004); t1.display(d1); return 0; }这个程序哪里错了
时间: 2024-03-31 18:38:53 浏览: 58
#include <iostream> #include<iomanip> using namespace std;九九乘法表
这个程序没有明显的语法错误,但是在调用 `t1.display(d1)` 函数时,应该将参数类型改为 `Date&`,而不是 `Time&`。因为 `display()` 函数是在 `Time` 类中定义的,需要传入一个 `Date` 类型的对象来显示日期,所以应该修改为 `void display(Date&);`,并在调用时传入 `Date` 类型的对象。
如果这里算作是错误的话,还可以指出`display()` 函数的友元声明应该是 `friend void display(Date&);`,而不是 `friend void display(Date & d);`,这里多了个空格。但这个问题不会导致程序出错,只是一种代码风格问题。
阅读全文