跨文件共享结构体指针数组
结构体:
struct Name
{
unsigned int id;
};
结构体指针数组:
struct Name name[3];
跨文件共享结构体指针数组:
条件:文件dataprcs.h+dataprcs.cpp调用函数对结构体指针数组进行处理;mainwindow.h+mainwindow.cpp对函数进行调用;结构体指针数组作为实参,通过函数改变实际的值
dataprcs.h
#ifndef GETDT_H
#define getdt_h
#include <QObject>
struct AcqData
{
unsigned char state;
};
extern struct AcqData acqdata[3];
class GETDT:public QObject
{
Q_OBJECT
public:
GETDT();
~GETDT();
public slots:
void func(struct AcqData *acqdata);
signals:
//some other func
};
#endif
dataprcs.cpp
#include "dataprcs.h"
using namespace std;
struct AcqData acqdata[3]=
{
{0},
{0},
{0},
};
GETDT::GETDT()
{
}
GETDT::~GETDT()
{
}
void GETDT::func(AcqDat* acqdata)
{
qDebug()<<acqdata[0].state;
acqdata[0].state=1;
}
mainwindow.h
#include<QMainWindow>
#include"dataprcs.h"
//some other declarations
mainwindow.cpp
#include "mainwindow.h"
//some other func & declarations
void MainWindow::on_button_clicked()
{
getdt->func(acqdata);
qDebug()<<acqdata[0].state;
}
ref:
https://stackoverflow.com/questions/11072244/c-multiple-definitions-of-a-variable
<C++ Primer Plus> chp 4.9, program 4.23, page 118 - page 119