| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 431 人关注过本帖
标题:俺刚学的友元函数怎么老编译通不过呢
取消只看楼主 加入收藏
pengle_008
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-7-1
收藏
 问题点数:0 回复次数:0 
俺刚学的友元函数怎么老编译通不过呢
红色的是问题语句,蓝色的是提示的错误

___________________________________________________________________________
date1.h

  #ifndef DATE1_H
  #define DATE1_H

class Date {
public:
    Date ( int = 1, int = 1, int = 1900 );
    void print() const;
    ~Date();
private:
    int month;
    int day;
    int year;
    int checkDay ( int );
};

#endif

_______________________________________________________________________________


emply1.h


#ifndef EMPLY1_H
#define EMPLY1_H

#include "date1.h"
class Employee {
public:
    Employee ( char *, char *, int, int, int, int, int, int );
    void print() const;
    ~Employee();
private:
    char firstName[ 25 ];
    char lastName[ 25 ];
    const Date birthDate;
    const Date hireDate;
}

#endif

________________________________________________________________________


test.cpp


#include <iostream.h>
#include <string.h>
#include "date1.h"

Date::Date ( int mn, int dy, int yr)
{
    if ( mn > 0 && mn <= 12 )
      month = mn;
    else {
        month = 1;
        cout < < "Month " < < mn < < " invalid. Set to month 1.\n";
  }
    year = yr;
    day = checkDay ( dy );
   
    cout < < "Date object consturctor for date ";
    print();
    cout < < endl;
}

void Date::print() const
  { cout < < month < < '/' < < day < < '/' < < year; }
  
Date::~Date()
{
    cout < < "Date object destructor for date ";
    print();
    cout < < endl;
}

int Date::checkDay ( int testDay )
{
    static const int daysPerMonth[ 13 ] =
      { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
      
    if ( testDay > 0 && testDay <= daysPerMonth[ month ] )
        return testDay;
      if ( month == 2 && testDay == 29 &&
            ( year % 400 == 0 ||
              ( year % 4 == 0 && year % 100 != 0 ) ) )
        return testDay;
        
      cout < < "Day " < < testDay < < " invalid. Set to day 1.\n";
      
      return 1;
}


// Fig. 7.4: emply1.cpp
// Member function definition for Employee class.
#include <iostream.h>
#include <string.h>
#include "emply1.h"
#include "date1.h"

Employee::Employee( char *fname, char *lname,
                    int bmonth, int bday, int byear,
                    int hmonth, int hday, int hyear )
:  birthDate ( bmonth, bday, byear ),
    hireDate ( hmonth, hday, hyear )

{
    int length = strlen ( fname );
    length = ( length < 25 ? length : 24 );
    strncpy ( firstName, fname, length );
    firstName[ length ] = '\0';
   
    length = strlen ( lname );
    length = ( length < 25 ? length : 24 );
    strncpy ( lastName, lname, length );
    lastName[ length ] = '\0';
   
    cout < < "Employee object constructor: "
        < < firstName < < ' ' < < lastName < < endl;
}

void Employee::print() const
{
    cout < < lastName < < ", " < < firstName < < "\nHired: ";
    hireDate.print();
    cout < < " Birth date: ";
    birthDate.print();
    cout < < endl;
}

Employee::~Employee()
{
    cout < < "Employee object destructor: "
        < < lastName < < ", " < < firstName < < endl;
}


// Fig. 7.4: fig07_04.cpp
// Demonstrating composition: an object with member objects.
#include <iostream.h>
#include <conio.h>
#include "emply1.h"

int main()
{
    Employee e ( "bob", "Jones", 7, 24, 1949, 3, 12, 1988 );
   
    cout < < '\n';
    e.print();
   
    cout < < "\nTest Date constructor with invalid values:\n";
    Date d ( 14, 35, 1994 );
    cout < < endl;
    getch();
    return 0;
}              

_________________________________________________________________________________

ISO C++ forbids defining types within return type
return type specification for constructor invalid.
搜索更多相关主题的帖子: 编译 函数 
2009-10-11 18:56
快速回复:俺刚学的友元函数怎么老编译通不过呢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024663 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved