【问题标题】:Returning a Struct in C++在 C++ 中返回结构
【发布时间】:2014-06-26 17:24:51
【问题描述】:

我知道这个问题已经被问过一百万次了,但我看了这么多答案,没有一个有用。

基本上我正在创建一个登录表单,我需要返回一个包含电子邮件、密码和布尔值的结构,以判断是否记住指定的登录信息。

我有一个名为 Database 的类,它由“database.cpp”和“database.h”组成。在头文件中,我有:

public:
    typedef struct{
        QString email;
        QString password;
        bool remember;
    }LoginInfo;

    LoginInfo getLoginInfo();

然后在源文件中,我有:

LoginInfo Database::getLoginInfo()
{
    LoginInfo data;
    data.email = QString("email@example.com");
    data.password = QString("test12345");
    data.remember = true;

    return data;
}

我似乎遇到的错误是,我需要在“Database::getLoginInfo()”之前添加一个分号,并且当我只有一个时,我重新定义了 Database::getLoginInfo()。

我对 c++ 了解不多,这实际上是我第一次使用结构,但我有很多 Java 和 Python 的编程经验。因此,我仍然可以被认为是 C++ 的“菜鸟”,我确信我在代码中留下了一些愚蠢的错误。

是的,如果你能帮助我,那就太好了。但就像我说的那样,我一直在努力让它工作大约 2 个小时,但没有运气,我已经放弃了搜索。

【问题讨论】:

  • 发布整个错误消息以及导致错误的行
  • 尝试用Database::LoginInfo Database::getLoginInfo() 代替LoginInfo Database::getLoginInfo()
  • 顺便说一句 - 你不需要 typedef 匿名 struct (那是“C 风格”)...只需给它一个名称,如 struct LoginInfo { QString email ... };

标签: c++ methods struct return


【解决方案1】:

结构体被定义为类的成员,所以你需要使用:

Database::LoginInfo Database::getLoginInfo()

【讨论】:

  • 非常感谢老兄,这一直困扰着我!
【解决方案2】:

您需要在函数定义中正确定义结构的范围。

Database::LoginInfo Database::getLoginInfo() {
    .
    .
    .
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-06
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2017-08-22
    • 1970-01-01
    相关资源
    最近更新 更多