Forward Declaration error
-
I did changed to Namespace DMM...but prob is I have to create an instance of this DMM in other directory class like this:
Start.h
@
#ifndef START_H
#define START_H#include "../../DMM/Include/DMM.h"
/****************************************************************************/
/**- \brief This class handles the initialization of the user interface.
/
/***************************************************************************/
namespace Start {
class Startup : public QObject
{
Q_OBJECTpublic:
Startup();
virtual ~Startup();
void GuiInit();private:
Ui::DMMMenu *MainWindow;
};
}
#endif // START_H
@Start.cpp:
@
#include "../../Start/Include/Start.h"
namespace Start {
Startup::Startup() : QObject() { // GUI components MainWindow = new DMM::DMMMenu();
}
Startup::~Startup()
{
try {
// GUI Componentsdelete MainWindow; } catch (...) {}
}
/***************************************************************************/
/!- \brief Initializes the user interface
/
/***************************************************************************/
void Startup::GuiInit()
{
MainWindow->show();
}
}
@
So now I am getting errors like these upon changing namespace to DMM:
- /home/pragati/MultiFuncTester/Components/Start/Build/../Source/Start.cpp:-1: In constructor 'Start::Startup::Startup()':
/home/pragati/MultiFuncTester/Components/Start/Build/../Source/Start.cpp:12: error: cannot convert 'DMM::DMMMenu' to 'Ui::DMMMenu*' in assignment*
2./home/pragati/MultiFuncTester/Components/Start/Build/../Source/Start.cpp:35: error: invalid use of incomplete type 'struct Ui::DMMMenu'
3./home/pragati/MultiFuncTester/Components/Start/Build/../../DMM/Include/DMM.h:9: error: forward declaration of 'struct Ui::DMMMenu'
- \brief This class handles the initialization of the user interface.
-
That's good - it means the compiler's got past the problem you were having before - now you've got the problem that you're using the wrong type for your member of Start::Startup.
I expect you want Start::Startup's declaration to read:
@class Startup : public QObject
{
Q_OBJECTpublic:
Startup();
virtual ~Startup();
void GuiInit();private:
DMM::DMMMenu *MainWindow;
};@
DMM::DMMMenu has a Ui::DMMMenu, but DMM::DMMMenu is not a Ui::DMMMenu (to use Object-orientated is-a / has-a terminology).
-
:(
I used it already before but as soon as I do this:
@DMM::DMMMenu *MainWindow;
@
I get error that
1./home/pragati/MultiFuncTester/Components/Start/Build/../../Start/Include/Start.h:27: error: 'DMM' does not name a typeand
2./home/pragati/MultiFuncTester/Components/Start/Build/../Source/Start.cpp:35: error: 'MainWindow' was not declared in this scope
-
-
hi...
Everything is working fine until when I write in main. In main I included one of the subdirectory's .h file and wrote some function like this I am posting here both the codes of main and that directory....
Error I am getting is :
/home/pragati/MultiFuncTester/Components/Main/Source/Main.cpp:-1: error: undefined reference to `Start::Startup::Startup()'
/home/pragati/MultiFuncTester/Components/Main/Source/Main.cpp:-1: error: undefined reference to `Start::Startup::GuiInit()'
/home/pragati/MultiFuncTester/Components/Main/Source/Main.cpp:-1: error: undefined reference to `Start::Startup::~Startup()'
Similiar error for GuiInit....
Start.h
@
#ifndef START_H
#define START_H#include "../../DMM/Include/DMM.h"
/****************************************************************************/
/**- \brief This class handles the initialization of the user interface.
/
/***************************************************************************/
namespace Start {
class Startup : public QObject
{
Q_OBJECTpublic:
Startup();
virtual ~Startup();
void GuiInit();private:
DMM::DMMMenu *MainWindow;
};
}
#endif // START_H
@
Start.cpp
@
#include "../../Start/Include/Start.h"
namespace Start {Startup::Startup() : QObject()
{// // GUI components
MainWindow = new DMM::DMMMenu();
}
/***************************************************************************/
/!- \brief Initializes the user interface
/
/***************************************************************************/
void Startup::GuiInit()
{
MainWindow->show();
}
}
@Main.cpp
@
#include "../../Start/Include/Start.h"
#include <QApplication>
#include <QtGui>int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Start::Startup start;
start.GuiInit();
return app.exec();
}@
- \brief This class handles the initialization of the user interface.