Dla każdej jednostki potrzebuje unitu, w którym będę przechowywać różne wspólne dane np. menedżer BD.
W Delphi mamy do tego DataModule i tu coś w ten deseń chciałem zrobić:
#ifndef DM_H
#define DM_H
#include <QtSql\QtSql>
namespace Utility
{
class DataModule
{
public:
QSqlDatabase db;
DataModule();
~DataModule();
};
DataModule DM;
}
#endif
#include "DM.h"
using namespace Utility;
DataModule::DataModule()
{
db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("");
db.setUserName("");
db.setPassword("");
db.setHostName("");
db.open();
}
DataModule::~DataModule()
{
}
#ifndef FIRMA_H
#define FIRMA_H
#include <QtGui/QMainWindow>
#include <QtSql\QtSql>
#include "ui_FIRMA.h"
class Firma : public QMainWindow
{
Q_OBJECT
public:
Firma(QWidget *parent = 0, Qt::WFlags flags = 0);
~Firma();
public slots:
void dosmoething();
private:
Ui::MainWindow ui;
QSqlQuery Q;
};
#endif // AD_H
#include "DM.h"
#include "FIRMA.h"
#include <QMessageBox>
using namespace Utility;
Firma::Firma(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags), Q(DM.db)
{
ui.setupUi(this);
connect(Firma::ui.btnSave, SIGNAL(clicked()), this, SLOT(dosmoething()));
}
Firma::~Firma()
{
}
void Firma::dosmoething()
{
}
Jak ominąć skutek wielokrotnego dołączania ?
Trochę jestem teoretyk, sądziłem że do tego wystarczy strażnik dołączania :)
VS2010 mówi
Error 1 error LNK2005: "class Utility::DataModule Utility::DM" (?DM@Utility@@3VDataModule@1@A) already defined in DM.obj
Jak wywalę includa w Firma.cpp to wtedy jest OK.