c ++中的Friend函数显示错误

时间:2015-05-26 18:10:24

标签: c++

void function(Road& R, int timestep) {      
    for(vector<int>::iterator it = R.void1().begin() ; it != R.void1().end() ; it++) {    
        for(vector<Car>::iterator it2 = R.void2((*it)).begin() ; it2 != R.void2((*it)).end() ; it2 ++) {

                if((*it2).get_travel_time() >= R.get1((*it))
                      (*it2).init_travel_time();
                else
                      (*it2).incr_travel_time(timestep);
            }
        }
    }

这适用于Dev c ++,但不适用于gcc和任何其他编译器。

    #include <iostream>
    using namespace std;

    class time{
        int date,month,year;
    public:
       void gettime(){
            cout<<"enter the (date/month/year)\n";
            cin>>date>>month>>year;
        }
        void show(){
            cout<<"Your age is:-"<<date<<month<<year;
        }
        friend time Add(time a1,time a2);
    };

    time Add(time a1,time a2){
            time temp;
            if(a2.date<a1.date)
            {
                a2.date=a2.date+30;
                temp.date=a2.date-a1.date;
                a2.month=a2.month-1;

            }
            else
                temp.date=a2.date-a1.date;
            if(a2.month<a1.month)
            {
                a2.month=a2.month+12;
                temp.month=a2.month-a1.month;
                a2.year=a2.year-1;
            }
            else
                temp.month=a2.month-a1.month;
            temp.year=a2.year-a1.year;
            return (temp);
    }

    int main()
    {
        time a1,a2,t3;
        a1.gettime();
        a2.gettime();
        t3=Add(a1,a2); //this is the friend function
        t3.show();
        return 0;
    }

1 个答案:

答案 0 :(得分:0)

iostream正在加入time.hctime。这是在全局命名空间和/或time_t time(time_t *t);命名空间中声明函数std,导致名称冲突。

要解决此问题,请重命名您的类,或在您自己的命名空间中定义它。

我还recommend staying away from using namespace std;以避免其他名称冲突或歧义,尽管在这种情况下它不是您的问题的原因。