Diskuze: C++ WxWidgets "undefined reference error" Pomoc prosím
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, myslím, že by to mohlo být tím, že výstup je statický člen, ale v moveObject k tomu přistupuješ jakoby nebyl statický. Zku oddělat static v hlavičkovém souboru nebo v implementaci zkus
void WxWFrame::moveObject(const char *noun, OBJECT *from, OBJECT *to)
{
OBJECT *obj = parseObject(noun);
if (obj == NULL)
{
WxWFrame::vystup->AppendText("I don't understand what item you mean.\n");
}
snad pomohlo
Něco podobného mě už napadlo, bohužel, to vyhodí tuhle chybovou hlášku:
C:\Users\Petr2\Desktop\Programko\TextovkaWxW\WxWMain.h|89|error: invalid use of member 'WxWFrame::vystup' in static member function|
C:\Users\Petr2\Desktop\Programko\TextovkaWxW\inventar.cpp|12|error: from this location|
Ukazuje to na řádek 12, což je:
WxWFrame::vystup->AppendText("I don't understand what item you mean.\n");
A musí být výstup statický?
No...já definoval všechny mé funkce z konzolové časti programu do WxWMain.h do public části, všechny jsem je udělal static, protože jinak to hlasilo, že funkce není "static member of class WxWFrame"
class WxWFrame: public wxFrame
{
public:
WxWFrame(wxWindow* parent,wxWindowID id = -1);
virtual ~WxWFrame();
static int getInput();
static char input[100];
static int parseAndExecute();
static void moveObject(const char *noun, OBJECT *from, OBJECT *to);
static void executeLook(const char *noun);
static void executeGo(const char *noun);
static void executeGet(const char *noun);
static void executeDrop(const char *noun);
static void executeGive(const char *noun);
static void executeAsk(const char *noun);
static void executeInventory(void);
static int nounIsInTags(const char *noun, const char **tags);
static int listObjectsAtLocation(OBJECT *location);
static int main();
private:
//(*Handlers(WxWFrame)
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
void OnTextCtrl1Text(wxCommandEvent& event);
void OnTextCtrl2Text(wxCommandEvent& event);
void OnTextCtrl1Text1(wxCommandEvent& event);
//*)
//(*Identifiers(WxWFrame)
static const long ID_TEXTCTRL1;
static const long ID_TEXTCTRL2;
static const long idMenuQuit;
static const long idMenuAbout;
static const long ID_STATUSBAR1;
//*)
//(*Declarations(WxWFrame)
wxTextCtrl* vystup;
wxStatusBar* StatusBar1;
wxTextCtrl* TextCtrl2;
//*)
DECLARE_EVENT_TABLE()
};
tohle je vlastně celé, co se nachází v WxWMain.h
Pozor na to, že ze statické funkce se nedostaneš na nestatické atributy a metody dané třídy. Z toho, co tu píšeš, moc nevidím, proč ty věci musí být statické. Maximálně proto, že je používáš přes
WxWFrame::funkce
což je málokdy opravdu potřeba.
Pokud by byl vystup nestatický, tak bych zkusil přistupovat přes
this->vystup
ale takhle nevím. Možná by pomohlo sem dát více zdrojáku, nebo i celý projekt v aktuálním stavu. Takhle asi budeme jen hádat.
Pokusím se sem přidat celý zdroják...mam ho rozdělený na více částí, pracoval jsem podle jednoho tutorialu a nasledně se pokusil vlastníma silama to spojit s WxWidgets, bohužel se nepovedlo...takže, snad to sem nějak dokažu dát celé.
Tohle by měli byt všechny časti projetku, snad to pujde.
http://www.itnetwork.cz/dev-lighter
snad se k tomu pujde dostat, nejsem si jistej jak jinak to se mam přidat
všechno.
Ahoj, tvoj problém má už riešenie tu: http://www.itnetwork.cz/…72cb552b7980
Ahoj, k statickým atribútom sa dá pristupovať aj ako keby neboli statické :
struct A
{
static string text; //Len deklaracia
void print()
{
//Do statickych atributov sa da pristupovat cez this
cout << this->text << endl;
//A aj bez this
cout << text << endl;
}
};
string A::text("RandomText"); //Definicia, to co chybalo
int main()
{
A a;
a.print();
//Do statickych atributov sa da pristupovat aj priamo cez instanciu
cout << a.text << endl;
}
Prečo inak by bolo toto zakázané
struct B
{
void f(){}
static void f(){} //Error
//Ako by compiler zistil ci chces volat staticku alebo nestaticku?
};
Dobře, pokusím se to nějak aplikovat na svůj problém, snad se mi to povede správně.
No, problem asi bude v tom, že já netuším jak a kam to přesně do kódu mam aplikovat...To už je z mé strany hloupá otázka, jenom jsem z toho všeho tak trochu zmatenej.
Zobrazeno 12 zpráv z 12.