#include <iostream.h>
#include "hpdate.h"
void main()
{
void Tdate ::Print()
{
cout<<month<<"/"<<day<<"/"<<year<<endl;
} Tdate::Set(6,10,1990);
    Tdate::Print;
void Tdate::Set(int m, int d, int y)
{
   month=m;
   day=d;
   year=y;
}
}//以下为hpdate.h
class Tdate
{
public:
void Set(int m,int d,int y);
void Print();
private:
int month;
int day;
int year;
};
编译出错:e:\Application\c++2\c++2.cpp(10): error C2352: 'Tdate::Set' : illegal call of non-static member function
        e:\Application\c++2\hpdate.h(4) : see declaration of 'Tdate::Set'
        e:\Application\c++2\c++2.cpp(6): error C2601: 'Tdate::Print' : local function definitions are illegal
       e:\Application\c++2\c++2.cpp(13): error C2601: 'Tdate::Set' : local function definitions are illegal
谢谢大家了~顶者有分

解决方案 »

  1.   

    void Tdate ::Print() 

    cout < <month < <"/" < <day < <"/" < <year < <endl; 

    void Tdate::Set(int m, int d, int y) 

      month=m; 
      day=d; 
      year=y; 
    }
    放到main函数外面
    对了,你的开发环境是什么?
      

  2.   

    另外 
    Tdate::Set(6,10,1990); 
        Tdate::Print; 
    这样调用也有问题
    你应该这样
    Tdate datetmp;
    datetmp.Set(6,10,1990); 
    datetmp.Print(); 要这样调用!
      

  3.   

    恩,能通过的,但是为什么要用Tdate datetmp; 
    datetmp.Set(6,10,1990); 
    而Tdate::Set不行呢?
      

  4.   

    不用那样改,可以这样。 这是让你学习静态函数和静态变量的。
    //以下为hpdate.h 
    class Tdate 

    public: 
    static void Set(int m,int d,int y); 
    static void Print(); 
    private: 
    static int month; 
    static int day; 
    static int year; 
    };// 以下为.cpp文件
    #include <iostream> 
    #include "hpdate.h" int Tdate::month = 0; 
    int Tdate::day = 0; 
    int Tdate::year = 0;void Tdate::Print() 

    cout <<month<<"/" <<day<<"/" <<year<<endl; 
    } void Tdate::Set(int m, int d, int y) 

    month=m; 
    day=d; 
    year=y; 
    } void main() 

    Tdate::Set(6,10,1990); 
    Tdate::Print();