radmar
(radmar)
25 Lipiec 2010 12:50
#1
witam
mam nowy problem:
mam dwie klasy:
MainWindow
oraz
MyClass
w MyClass.h
do sekcji private wrzucam:
Phonon::MediaObject *mediaObject;
natomiast do konstruktora tej klasy w MyClass.cpp
MyClass::MyClass()
{
mediaObject = new Phonon::MediaObject(this);
}
i otrzymuję błąd:
error: no matching function for call to ‘Phonon::MediaObject::MediaObject(Radio* const)’
P.S Dodam tylko, że jak te instrukcje umieszczę w klasie MainWindow(odpowiednio w klasie i konstruktorze) to błędu nie ma
proszę o pomoc
nr47
(Sawyer47)
25 Lipiec 2010 13:14
#2
MyClass dziedziczy po QObject? Masz makro Q_OBJECT?
radmar
(radmar)
25 Lipiec 2010 13:39
#3
wielkie dzięki działa, fakt zapomniałem o QObject, mam te nawyki z QT Jambi
wstawiłem makro, oraz odziedziczyłem po QObject
mam teraz pytanie bardziej teoretycznie:
jak w C++ to wygląda:
mam konstruktora przydzielam pamięć
potem ją zwalniam w destruktorze za pomocą delete nazwa obiektu?
jak mam zwolnić pamięć po składowej klasy np. typu int? - a może po składowych pamięci się nie zwalnia?
oraz
pytanie odnośnie klasy MainWindow, jak wstawię kontrolki designerem - również mam dbać o sprzątanie po tych kontrolkach?
nr47
(Sawyer47)
25 Lipiec 2010 13:42
#4
Taki błąd już miałeś w poprzednim temacie.
radmar
(radmar)
25 Lipiec 2010 13:52
#5
wiem, juz naprawione, wykonałem edit posta
spojrz
nr47
(Sawyer47)
25 Lipiec 2010 14:04
#6
Jeśli alokujesz dynamicznie new to i zwalniasz delete. Składowe niealokowane dynamicznie (np. int) są zwalniane automatycznie wraz z obiektem.
Zbyt ogólne pytanie, przynajmniej jak dla mnie. Tak czy siak, patrz wyżej.
radmar
(radmar)
25 Lipiec 2010 14:20
#7
mam jeszcze dwa pytania:
1.destruktor klasy MyClass sam się wywoła, prawda?
jest taka biblioteka pod Jave (Xstream) ona umożliwia zapis obiektu( tablicy, czy nawet obiektu własnej klasy do pliku XML,
potem za pomocą tej biblioteki możemy ją odczytać - przywracamt zapisany stan obiektu) w tym miejscu rodzi się pytanie: czy w QT jest taki mechanizm, jesli tak to jaka klasa?
oraz czy istnieją inne takie biblioteki coś jak xsrteam, tylko żeby była tez pod C/C++
radmar
(radmar)
27 Lipiec 2010 16:37
#9
mam kolejny błąd:
mainwindow.cpp:17: error: no match for ‘operator=’ in ‘((MainWindow*)this)->MainWindow::object = (operator new(8u), (, ((Radio*))))’
dzieje się tak gdy:
w klasie MainWindow, sekcja private - Myclass object; // to działa
teraz w konstruktorze tej klasy przydzielam pamięć: object = new MyClass();
konstruktora klasy MyClass, ma taką postać:
MyClass()
{
… // tutaj rozne instrukcje
}
nr47
(Sawyer47)
27 Lipiec 2010 16:41
#10
Daj więcej kodu, trudno wróżyć z tych ochłapów. Być może przypisujesz do object tam gdzie nie możesz (bo jest private), być może chodzi o co innego.
radmar
(radmar)
27 Lipiec 2010 16:54
#11
problem rozwiązany. zapomniałem object zadeklarowac jako wskaznik
– Dodane 27.07.2010 (Wt) 19:00 –
mam natomiast inny problem - szukam w dokumentacji i nie mogę znaleźć - nigdzie nie widze co mogę robić źle.
Phonon::MediaObject *mediaObject; // sekcja private klasy MainWindow
jak teraz robię tak w konstruktorze klasy MainWindow:
mediaObject = new Phonon::MediaObject(this);
QString fileName(“dysk\plik.ogg”);
mediaObject->setCurrentSource(fileName);
mediaObject->play();
jednak nic sie nie dzieje - nie gra muzyka, w czym może byc blad?