丢弃限定符 -允许
discard qualifiers -fpermissive
本文关键字:允许 更新时间:2023-10-16
嗨,伙计们,我犯了一个错误,我无法在void GPSPathList上 understand.in 我的主要类::p rint(( const我收到此错误。
[Error] passing 'const GPSPathList' as 'this' argument of 'void GPSPathList::print_item(const GPSPathList::GPSCoordNode*)' discards qualifiers [-fpermissive]
你能帮忙吗
我的标题
#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
我的主要
#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();
}
嗨,伙计们,我犯了一个错误,我无法在void GPSPathList上 understand.in 我的主要类::p rint(( const我收到此错误。
您无法从const
方法调用非const
方法。考虑将print_item
作为一种const
方法。
相关文章:
- 如何只允许用户输入正整数
- 控制允许动态运行c++的并发操作数
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 允许从 std::map 的密钥窃取资源?
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 为什么 Clang 不允许"and"作为函数名称?
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 不允许在向量中添加更多元素
- std::带有自定义缓冲区的 iostream 不允许我写入
- Visual Studio 2017 不允许我创建 C++ 专用模板
- 在noexcept 规范中是否允许使用"this"?
- 返回时不允许隐式转换
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- 对象初始化中是否允许指向此成员的指针?
- 如何允许大写和小写用户输入?
- 为什么函数声明中允许 const?
- 是否允许使用带有"w+"模式的 freopen 进行标准设置?
- 为什么 c++ 不允许(自动)强制转换?
- 为什么 c++11 不允许使用自动