You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt项目rlWindow类出现multiple definitions多重定义错误如何解决

问题原因及解决方案

你代码里的错误来自rlwindow.h的两处语法问题:

  • 头文件引用错误:你引入的<string.h>是C语言的字符串函数库,不包含C标准字符串类型std::string的定义,需要替换为C的<string>头文件。
  • pair类型使用错误:
    1. 标准库std::pair要求传入两个模板参数,你代码中只写了pair<string>不符合语法规则,结合你注释的业务逻辑,UserData需要存储用户名和密码两个字符串,应该改为std::pair<std::string, std::string>。
    2. 没有添加std命名空间前缀,头文件中不建议使用using namespace std(会造成全局命名空间污染),所有标准库类型都需要显式加std::前缀。

修改后的rlwindow.h核心代码片段

#ifndef RLWINDOW_H
#define RLWINDOW_H

#include <QWidget>
#include <QString>
#include <string> // 替换原来的<string.h>

#include "Utilities.h"
//#include "fmanager.h"


namespace Ui {class rlWindow;}


class rlWindow : public QWidget
{
    Q_OBJECT

public:
    explicit rlWindow(bool login, QWidget *parent = nullptr);
    ~rlWindow();

private slots:
    void on_ContinueButton_clicked();

private:
    Ui::rlWindow *ui;
    //fmanager *Manager;
    std::pair<std::string, std::string> UserData; // 修正pair的写法
    bool LoR; // True = Login / False = Register

};

#endif // RLWINDOW_H

修改完成后清理项目、重新运行qmake再编译即可解决报错。

内容的提问来源于stack exchange,提问作者Dain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:15:07