gpt4 book ai didi

c++ - QT C++ 如何正确创建以对象为参数的函数

转载 作者:行者123 更新时间:2023-11-28 02:24:46 24 4
gpt4 key购买 nike

我在 C++ 中创建了一个类,其中有一个方法接收同一个类的对象作为参数。

我的类定义没有错误,但是在使用该方法时出现以下错误:

 error: C2662: 'bool Cliente::igual(const Cliente &)' : cannot convert 'this' pointer from 'const Cliente' to 'Cliente &'
Conversion loses qualifiers

我不需要修改作为参数发送的对象,所以我认为最好的方法是使用引用。但是,我对 C++ 还很陌生,如果有任何关于使用什么的建议(指针、引用、cons 引用),我们将不胜感激。

客户端.h

#ifndef CLIENTE_H
#define CLIENTE_H
#include "qstring.h"

class Cliente
{
public:
Cliente();
Cliente(QString,QString,QString);
QString nombre;
QString email;
QString phone;
bool igual( const Cliente& c);
const QString getNombre();
const QString getEmail();
const QString getPhone();
};

#endif // CLIENTE_H

客户端.cpp

#include "cliente.h"
#include "qstring.h"

Cliente::Cliente() {}

Cliente::Cliente(QString n, QString e, QString p){
nombre = n;
email = e;
phone = p;
}

QString const Cliente::getNombre(){
return nombre;
}
QString const Cliente::getEmail(){
return email;
}
QString const Cliente::getPhone(){
return phone;
}
bool Cliente::igual(const Cliente& c){
Cliente::if(nombre == c.getNombre() && email == c.getEmail() && phone == c.getPhone()){
return true;

}
return false;
}

方法的使用:

  QList<Cliente> clientList;
while(query.next()){
name = QString("A%1").arg(i);
email = QString("B%1").arg(i);
phone = QString("C%1").arg(i);
QString valName = query.value(0).toString();
QString valEmail = query.value(1).toString();
QString valPhone = query.value(2).toString();
Cliente cliente(valName,valEmail,valPhone);
bool existe = false;
for (int j = 0; j < clientList.size(); ++j) {
if (clientList.at(j).igual(cliente)){
existe = true;
break;

}
}
if(!existe){
clientList.append(cliente);
xlsx.write(name,valName);
xlsx.write(email,valEmail);
xlsx.write(phone,valPhone);
}

i++;
}

错误发生在:clientList.at(j).igual(cliente))

最佳答案

nombreemailphone 添加 getter。

这些 getter 方法应该是 const 方法。

(例如:QString getNombre() const { return nombre; })

然后像下面这样比较

if(nombre == c.getNombre() && email == c.getEmail() && phone == c.getPhone()){
return true;

}

关于c++ - QT C++ 如何正确创建以对象为参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31128693/

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