problem z QObject(bib. Qt)

problem z QObject(bib. Qt)
F1
  • Rejestracja:prawie 16 lat
  • Ostatnio:prawie 13 lat
0

Witam
Pisze program z wykorzystanie biblioteki Qt.
mam sobie klase:

Kopiuj
class User : public QObject
{
public:
    User();

private:
    QString name;
};
}

oraz funkcje:

Kopiuj
void funk(QObject &ob){

    if(ob.inherits("User"))cout<<"tak";
}

teraz w maine używam:

Kopiuj
main(){
User *user=new User();
funk(*user);
}

i teraz dlaczego funkcja ob.inherits nie chce mi rozpoznać klasy ?
Czytałem dokumentaje ale nie potrafie do tego dojść.
Ogólnie chce zrobić tak, że mam sobie kilka klas (np. User, zwierze , roslina) i po wrzuceniu to tej funkcji ktoregoś z objektow, funkcja ma rozpoznawać klase.
Proszę o pomoc :)

kotlar
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 11 lat
  • Postów:33
0

może coś takiego :d pisze z głowy wiec mogą być błędy :d

Kopiuj
void funk(QObject *ob)
{
	QObject *obiekt;
	obiekt = qobject_cast<User*>(ob);
	if(obiekt == NULL)
	{
		obiekt = qobject_cast<Zwierze*>(ob);
		if(obiekt == NULL)
		{
			obiekt = qobject_cast<Roslina*>(ob);
			if(obiekt == NULL)
			{
				qDebug()<<"jest niezidentyfikowany obiekt";
			}
			else
				qDebug()<<"jest Roslina";
		}
		else
			qDebug()<<"jest Zwierze";
	}
	else
		qDebug()<<"jest User";
}
nav
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
0

Czy nie brakuje tam makra Q_OBJECT ?


utf-8 rlz! ٩(ಥ_ಥ)۶
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 minuty
0

dokładnie, bez tego makra nie ma "meta data" dla tej klasy, więc po prostu nie da się zastosować rozpoznawania po nazwie klasy, qobject_cast też nie zadziała w tym przypadku.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.