这个折磨我整整一天呀,不断的调试,我想定义一个全局的结构体,是的可以在不同的.cpp
文件夹中使用,但是刚开始遇到了很多困难,怎样都引用不成功,最后终于写好extern和static下的定义
在自定义.h文件中声明,.cpp文件中赋值
在其他文件中引用需要加上自定义的头文件和 声明
如果在自定义的data文件使用extern定义的结构体
在data.h文件中
#ifndef DATA_H #define DATA_H #include <QObject> typedef struct { int a; char b; }enen; extern enen enen1; //声明 extern enen enen2; class Data : public QObject { Q_OBJECT public: explicit Data(QObject *parent = nullptr); void getdata(); signals: public slots: }; #endif // DATA_H
讯享网
data.cpp中对定义的结构体赋值
讯享网#include "data.h" //enen enen1; Data::Data(QObject *parent) : QObject(parent) { } void Data::getdata() { enen1.a=10; //赋值 enen2.a=20; }
在MainWindow中引用
MainWindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include<data.h> #include <QMainWindow> #include<ceshi.h> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); Data *en; Ceshi *aa; private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
MainWindow.cpp
讯享网#include "mainwindow.h" #include "ui_mainwindow.h" #include<QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); en=new Data(this); en->getdata(); aa=new Ceshi(this); // enen1.a=10; qDebug()<<enen1.a<<endl; //引用 qDebug()<<enen2.a<<endl; aa->pp(); qDebug()<<enen1.a<<endl; qDebug()<<enen2.a<<endl; } MainWindow::~MainWindow() { delete ui; }
也可以在自定义的ceshi文件中引用
ceshi.h
#ifndef CESHI_H #define CESHI_H #include <QObject> #include<data.h> class Ceshi : public QObject { Q_OBJECT public: explicit Ceshi(QObject *parent = nullptr); void pp(); // enen enen1; signals: public slots: }; #endif // CESHI_H
ceshi.cpp
讯享网#include "ceshi.h" #include<QDebug> #include<data.h> //必须要加 enen enen1; //必须要加 enen enen2; Ceshi::Ceshi(QObject *parent) : QObject(parent) { } void Ceshi::pp() { qDebug()<<"AAA"<<endl; enen1.a=130; enen2.a=140; qDebug()<<enen1.a<<endl; qDebug()<<enen2.a<<endl; }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/19842.html