gpt4 book ai didi

c++ - 编译器错误 : passing const object as ‘this’ argument of a method discards qualifiers

转载 作者:行者123 更新时间:2023-11-28 06:48:19 25 4
gpt4 key购买 nike

<分区>

我遇到了这个错误

错误:将“const Polilinea”作为“int Polilinea::NumeroPuntos()”的“this”参数传递会丢弃限定符 [-fpermissive]

我不知道我的代码有什么问题,这是头文件和类文件,在我的类里面注意到示例中的语法与我的代码完全一样,但是当我编译它时,编译器会提示我认为这是不正确的,我的解决方案是不在方法中声明 const,但我想知道导致错误的原因。这是头文件:

#ifndef PUNTO
#define PUNTO
#ifndef POLILINEA
#define POLILINEA

using namespace std;

class Punto{
private:
double x, y;
public:
Punto(double abcisa, double ordenada);
bool operator == (const Punto otro);
double GetX();
double GetY();
};

class Polilinea{
private:
Punto *puntos; // vector con los puntos de la linea
int num; //numero de puntos

//funciones privadas de ayuda para los metodos publicos
void ReservaMemoria(int numero_puntos);
void LiberaMemoria();
void CopiaPuntos(const Polilinea & otra);
public:
Polilinea(int numero_puntos);//constructor por defecto
Polilinea(const Polilinea & otra); //operador de copia
~Polilinea(); // destructor

//sobrecarga de operadores
Polilinea & operator = (const Polilinea & otra);
Punto operator [] (const int indice);
bool operator == (const Polilinea & otra);
bool operator != (const Polilinea & otra);
friend Polilinea operator + (const Punto sumado);
friend Polilinea operator + (const Punto sumado, const Polilinea & sumada);

//auxiliares
void SetNumPuntos(int numero);
int NumeroPuntos();
};

#endif
#endif

cpp文件:

#include <iostream>
#include <cstdlib>
#include <cmath>
#include "polilinea.h"

using namespace std;

Punto :: Punto(double abcisa = 0.0, double ordenada = 0.0): x(abcisa), y(ordenada){};

double Punto :: GetX(){
return x;
};

double Punto :: GetY(){
return y;
};

bool Punto :: operator == (Punto otro){
bool iguales;
if((x == otro.GetX()) && (y == otro.GetY()))
iguales = true;
else iguales = false;
};

Polilinea & Polilinea :: operator = (const Polilinea & otra){
if(this != &otra){
Polilinea temp(otra.NumeroPuntos());

for(int i = 0; i < num; i++)
temp[i] = otra[i];

return (*this);
};
};

Punto Polilinea :: operator [] (const int indice){
return (puntos[indice]);
};

int Polilinea :: NumeroPuntos(){
return num;
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com