Forum: PC-Programmierung Klasse über Instanz aufrufen


von QTler (Gast)


Lesenswert?

Hallo an alle!

Ich versuche schon seit geraumer Zeit mit QT ein Methode einer Klasse im 
MainWindow aufzurufen über einen Pointer.

Anbei mal der Quellcode. Ich hoffe, es wird klar was ich hier versuche.
Bekommen leider immer wieder den Fehler "undefined reference to 
TestKlasse::test()"

Die Referenz müsste doch über den pointer von Instance zuweisbar sein 
oder?
Würde mich über Unterstützung freuen.


testklasse.h
1
#ifndef TESTKLASSE_H
2
#define TESTKLASSE_H
3
#include <QString>
4
5
class TestKlasse
6
{
7
public:
8
    TestKlasse();
9
    static TestKlasse *ptestklasse;
10
    static TestKlasse* Instance();
11
    QString test();
12
};
13
#endif // TESTKLASSE_H

testklasse.cpp
1
#include "testklasse.h"
2
3
TestKlasse::TestKlasse()
4
{
5
6
}
7
8
TestKlasse* TestKlasse::Instance()
9
{
10
    if(TestKlasse::ptestklasse == nullptr)
11
        TestKlasse::ptestklasse = new TestKlasse();
12
    return TestKlasse::ptestklasse;
13
}
14
15
QString test()
16
{
17
return "Hat geklappt";
18
}

MainWindow.cpp
1
 this->setWindowTitle(TestKlasse::Instance()->test());

von Oliver S. (oliverso)


Lesenswert?

QTler schrieb:
> QString test()
> {

Da denkste nochmals drüber nach, was da fehlt.

Oliver

: Bearbeitet durch User
von Qtler (Gast)


Lesenswert?

Hab es mit
1
QString TestKlasse::Test()
2
{
3
return "Hat geklappt";
4
}

probiert. Bringt auch nichts.
Meintest du das ?

Danke im Voraus

von Qtler (Gast)


Lesenswert?

Hab
1
TestKlasse* TestKlasse::ptestklasse
 in der cpp hinzugefügt.
Jetzt funktioniert es.
Danke für den Denkanstoß

von Markus B. (mbo_ap)


Lesenswert?

QTler schrieb:
> Ich versuche schon seit geraumer Zeit mit QT ein Methode einer Klasse im
> MainWindow aufzurufen über einen Pointer.
> Anbei mal der Quellcode. Ich hoffe, es wird klar was ich hier versuche.


Das was du hier machen willst nennst sich Singleton Pattern. Mit Google 
findest du schnell Standardimplementierungen dazu.

von Qtler (Gast)


Lesenswert?

Perfekt
Vielen Dank für den Tipp

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.