gpt4 book ai didi

c++ - C2664 无法将参数 1 从 User *const 转换为 Qt C++ 中的 User

转载 作者:行者123 更新时间:2023-11-28 07:34:32 34 4
gpt4 key购买 nike

我是 C++ 和 Qt 的新手,但我已经玩了几天,我需要在周五之前拿出我的产品的基本原型(prototype),所以没有太多时间转换我的 7多年的 PHP 知识转化为 C++ 知识,因为我确信掌握 C++ 需要一生。在过去的几天里,由于对小位和字节的不了解,我时常陷入困境。这个时候我什至不知道在网上找什么。

首先,我使用 Qt 作为我的框架来做一个简单的 GUI 网络客户端,它可以与我的 PHP 应用程序对话。我想在此应用程序中创建一个非常简单的 WebAPI 类并拥有类“webapi”。场景非常简单,用户启动应用程序,应用程序检查用户是否登录。如果没有,则它会打开一个登录对话框。在对话框中输入信息(用户名/密码)后,将填充用户对象并调用方法“authenticate”。

authenticate 方法然后调用 webapi 类中的 fUser 方法向服务器发出请求,该服务器持有一些信息以根据服务器的数据库对用户进行身份验证。

在代码中它看起来像这样:品味.cpp:

user = new User();

while ( user->isLoggedIn() != true )
{
LoginDialog loginWindow;
loginWindow.setModal(true);
int result = loginWindow.exec();
if ( result == QDialog::Accepted )
{
user->authenticate(loginWindow.getUsername(), loginWindow.getPassword());

if ( !user->isLoggedIn() )
{
loginWindow.setUsername(loginWindow.getUsername());
loginWindow.exec();
}
}
else
{
exit(1);//exit with code 1
}
}

用户.cpp:

void User::authenticate(QString username, QString password)
{
qDebug() << username;
qDebug() << password;


if ( username != "" && password != "")
{

webapi wapi;
loggedIn = wapi.fUser(this);
}
else
{
loggedIn = false;
}
}

webapi.cpp:

/**
Represents the fUser method on the server,
it wants to get a user object
the user will need to be authenticated with this
then all infos about user are transfered (RSA Keypair etc)
* @brief webapi::fUser
* @param username
* @param password
* @return User
*/
bool webapi::fUser(User baseUser)
{
return true;
}

现在你可以清楚地看到我目前没有在 webapi::fUser 方法中做任何事情。事实上,我什至没有退还我想退还的东西。我想返回一个 User 对象而不是 bool 值,实际上与我首先通过参数获得的对象相同。但是,当我这样做时出现复制构造函数错误。 (在我的 savor.h 文件中,我将私有(private)属性声明为指针 => User *user;)

那么问题来了,当我调用fUser 方法时我做错了什么?为什么我不能简单地将用户对象本身传递给方法?我还没有完全理解 const 和指针以及何时使用什么。

对于 Qt creator,我实际上使用的是 MS Visual C++ 编译器,它会抛出标题中的错误:

C2664 'webapi::fUser' : cannot convert paramter 1 from 'User *const' to 'User'

我已阅读 http://msdn.microsoft.com/en-us/library/s5b150wd(v=vs.71).aspx此页面解释何时发生这种情况,唯一的解决方案是对象本身的转换。

如果是这样的话,我可能会以错误的方式处理整个问题。

我期待着您在这件事上的提示和帮助。非常感谢。

最佳答案

webapi::fuser 按值获取 User,但您在这里将其传递给 User*:

wapi.fUser(this);

要么传递一个用户:

wapi.fUser(*this);

或更改 webapi 以获取指向 User 的指针。

关于c++ - C2664 无法将参数 1 从 User *const 转换为 Qt C++ 中的 User,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17005322/

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