[SOLVED] Invalid use of incomplete type 'class UI::MainWindow'
-
C:\Users\Lorence30\Desktop\test\mainwindow.h:32: error: invalid use of incomplete type 'class Ui::MainWindow' ui->grassyTile
^why i keep getting this error?
I have my Q_OBJECT macro inside the MainWindow class.
*[link text](link url) class MainWindow : public QMainWindow
{
Q_OBJECTpublic:
explic[it MainWindow(QWidget *parent = 0);
~MainWindow();](link url)private slots:
void changeTile();
void pushTile();private:
Ui::MainWindow *ui;
int counter;std::array<Tile,1> tile_list { ui->grassyTile // heres where error coming from };
};
-
@Lorence said:
grassyTile
What type is that ?
"use of incomplete type" often means a include file is missing
or you forwarded a class
like
class SomeClass;And try to use it in a context where it needs to be fully defined.
Like adding to some template lists.Not sure what you tried to define here ?
std::array<Tile,1> tile_list <---- ; missing here?
{
ui->grassyTile // heres where error coming from
}; -
@Lorence
Ok, and you are 100% it knows the tile type here?
you can declare one over the tile_list and it will like it ?
Tile *Test;One thing I wonder, you say
std::array<Tile> and not std::array<Tile *) or & so it must make a copy of
it (the tile). Is that the effect you want? -
http://i.imgur.com/3O9O6Vg.png
this is the error im getting -
@mrjj
ahh, Ui::MainWindow is defined in
#include "ui_main_window.h"
which is included in the CPP file so the type is not fully defined so you cannot say
ui->Somename
as Ui::MainWindow is not defined yet.moving
#include "ui_main_window.h"
to the minwin.h file allows it but not sure if it will confuse Qt Creator.Also it will complain about not being able to convert Tile to Tile * as list is not pointers and ui->grassyTile will be.
-
ahh, Ui::MainWindow is defined in
#include "ui_main_window.h"didnt think of that, thanks! but new error comes
-
@Lorence
heh 9 mins is not considered late ;)then the list must be pointer type or it will be new ones and not the ones on screen.
so
std::array<Tile> should be std::array<Tile *> or std::array<Tile &>
so its the ones on screen and not new ones
Yes you must at least use & as it must "point" to the real one. -
then the list must be pointer type
yea, i edited my last replyit will be new ones and not the ones on screen.
it is the ones on the screen, there will be a list of tiles on the screen and the user will choose what tiles they want to render
*so
std::array<Tile> should be std::array<Tile > or std::array<Tile &>
so its the ones on screen and not new ones
Yes you must at least use & as it must "point" to the real one.thanks!!!!!!!!
all my problem is fixed :) I have not coded for weeks and C++ is already kicking me damit
-
and tile_list is the ones to choose from ?
yes, it is a list of Tile which is inheriting QLabel
Dont worry. I programmed c++ for 20 years and it still kicks me ;)
woaaaaa, me is about a year, and started this QT last week, i choose this for my tile engine's interface from SFML, i still have more ways to go !^_^
-
welcome on board to Qt. its a nice frame work.
Yes my first choice is wxwidget and windows form application, but signals and slots mechanism of qt makes me decide to choose qt
Oh so its some sort of game editor your are making ?
yes exatcly, like the rpg maker vx ace of steam