2017-03-31 2 views
-1

Hallo Leute, ich nehme einen Fehler, den ich nicht verstehen kann.in meiner Hauptklasse auf void GPSPathList :: print() const Ich habe diesen Fehler.verwerfen Qualifiers -fpermissive

[Error] passing 'const GPSPathList' as 'this' argument of 'void GPSPathList::print_item(const GPSPathList::GPSCoordNode*)' discards qualifiers [-fpermissive] 

Können Sie

MY-Header

#ifndef GPSPATHLIST_H 
#define GPSPATHLIST_H 

class GPSPathList { 
    public: 
     GPSPathList(){ m_size = 0; m_item_list = 0; } 
     int size() const{return m_size;} 

    void add_from_user(); 
    void print() const; 
    double total_distance(); 

    private: 
     struct GPSCoordNode{ 

      double longtitude; 

      double lattitude; 
      GPSCoordNode *next; 
     }; 
    void print_item(const GPSCoordNode *item); 
    void addpoint(const double& lattitude, const double& longtitude); 

    int m_size; 
    GPSCoordNode *m_item_list; 


}; 
#endif 

mein Haupt

#include "gpspathlist.h" 
#include <iostream> 
#include <cmath> 

using std::ifstream; 
using std::cout; 
using std::cin; 
using std::endl; 
using std::string; 

void GPSPathList::print_item(const GPSCoordNode *item){ 

cout<< "<"<<item->lattitude<<","<<item->longtitude<<">"<<endl; 
} 
void GPSPathList::addpoint(const double& lattitude , const double& longtitude){ 

    GPSCoordNode *new_point = new GPSCoordNode; 
     new_point->lattitude = lattitude; 
     new_point->longtitude = longtitude; 

     if (m_item_list == 0) { 

       new_point->next = m_item_list; 
       m_item_list = new_point; 
        } 
        else { 

       GPSCoordNode *p = m_item_list; 
       while (p->next != 0) 
         p = p->next; 

       new_point->next = p->next; 
       p->next = new_point; 
     } 
     m_size++; 
} 
void GPSPathList::add_from_user(){ 

string a; 
double lattitude,longtitude; 

    while(true){ 


    cout << "Enter lattıtude : " <<endl; 
       cin >> lattitude; 
       cout << "Enter longtıtude : " <<endl; 
       cin >> longtitude; 
       addpoint(lattitude,longtitude) ; 
        cout <<"if exit press no to ";    
       cin >>a; 
       if(a=="no"){ 
        break; 
       } 
       } 
       } 

void GPSPathList::print() const 
{ 
     const GPSCoordNode *d = m_item_list; 
     while (d != 0) { 
       print_item(d);//my problem is in here 
       d=d->next; 



     } 
} 
double GPSPathList::total_distance(){ 

double a,b,c,d,longtitude,lattitude,longtitude2,lattitude2,R,S; 

GPSCoordNode *v = m_item_list; 
    for (int i =0; i<m_size; i++){ 

    a=v->lattitude; 
    b=v->longtitude; 

    v=v->next; 
     c=v->lattitude; 
     d=v->longtitude; 
     v=v->next; 
     i++; 
     R = 6371.8; 
    longtitude= (3.141593/180.0) * b; 
    lattitude = (3.141593/180.0) * a; 
    longtitude2=(3.141593/180.0) * d; 
    lattitude2=(3.141593/180.0) * c; 
    double Lat =lattitude2-lattitude; 
    double Lon = longtitude2-longtitude; 



    double w = sin(Lat/2); 
    double x=sin(Lon/2); 

    double q= R * asin(sqrt((w*w)+(cos(lattitude) * cos(lattitude2)*x*x))); 


i++; 
return S=q*1.609; 

cout<<" distance: "<< S; 
} 
} 
int main(int argc, char** argv){ 

GPSPathList a; 
a.add_from_user(); 
a.print(); 
a.size(); 
a.total_distance(); 



} 

Hallo Jungs helfen, nehme ich einen Fehler, den ich understand.in meine Hauptklasse kann nicht auf Leere GPSPathList :: print() const Ich habe diesen Fehler bekommen.

+1

'const' Methoden können nur andere' const' Methoden aufrufen. 'print_item' ist keine' const' Methode. –

Antwort

0

Sie können nicht die Methoden const von const aufrufen. Ziehen Sie in Betracht, print_item eine const Methode zu machen.

Verwandte Themen