hiyachen 2024-03-10 17:22 采纳率: 0%
浏览 104

QT在头文件定义结构体,在cpp文件报错was not declared in this scope

QT在头文件定义结构体,在cpp文件报错was not declared in this scope
头文件
class MainWindow : public QMainWindow
{
    Q_OBJECT
    typedef struct _UserInfo
    //struct UserInfo
    {
        QString id;
        QString name;
    } UserInfo;

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

cpp文件中:


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    bool dbOK = false;
   UserInfo userInfo;

最后一行UserInfo userInfo处报错:error: 'useInfo' was not declared in this scope
请教各位

  • 写回答

2条回答 默认 最新

  • 关注

    hiyachen 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    这个错误是因为你在cpp文件中使用了未声明的结构体类型。在C++中,头文件中定义的结构体只在该头文件中可见,需要在cpp文件中重新声明结构体。

    解决方案如下:

    1. 在需要使用结构体的cpp文件中包含头文件。
    #include "mainwindow.h"
    
    1. 在cpp文件中重新声明结构体。
    struct _UserInfo
    {
        QString id;
        QString name;
    };
    
    1. 使用重新声明的结构体。
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        bool dbOK = false;
        _UserInfo userInfo;
        userInfo.id = "123";
        userInfo.name = "John";
    }
    

    这样就可以解决错误了。注意,这里重新声明的结构体名称为_UserInfo,与头文件中的UserInfo有所不同,保证了在cpp文件中的可见性。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月10日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀