Save object to a file
-
wrote on 13 Aug 2013, 20:26 last edited by
if I take out #include "Film.h" in FilmWriter there is a problem with the FilmWriter class, if I then take out : public Film there is a problem with the func saveFilm because it's parameter is of type Film. So how do I make it know how to use Film?
-
This is C/C++ basic knowledge. Without the header file how would your class know anything about Film ?
What problem would it be ?
-
wrote on 13 Aug 2013, 20:39 last edited by
well it wouldn't know about Film without the header file. Are you saying that it doesn't need to be a child of Film but just include the header?
-
Yes, it's exactly what I'm saying
-
wrote on 13 Aug 2013, 21:14 last edited by
Ok great. But now after the changes I am still getting the same error :-?
:: error: collect2: ld returned 1 exit status -
If you are talking about the saveFilm problem and the message didn't changed, then saveFilm is still not a member of FilmInput.
Isn't it a member of FilmWriter ?
-
wrote on 13 Aug 2013, 21:24 last edited by
Yes and I don't want it to be a member of FilmInput, I want it to be member of FilmWriter only and somehow (I don't know how) be called in FilmInput. I thought if I included the FilmWriter header it would work, but obviously I must do something else.
-
FilmWriter is a class, how do you call a function from a class ?
-
wrote on 13 Aug 2013, 21:36 last edited by
You create an object and call the function with the object. That's it! Ok so now you have helped me to get rid of that error, thanks a lot. Another question, when I click on the save film button which invokes saveFilm the program crashes, should I start a new thread because this is a new question or can you still help me on this one?
-
Run your application through the debugger, it will tell you where the crash occurs
-
wrote on 14 Aug 2013, 06:56 last edited by
I got this: The inferior stopped because it received a signal from the operating system
signal name: SIGSEGV
Signal meaning: Segmentation fault
then it is pointing to line 2185 in qglobal.h
inline QFlags operator&(Enum f) const { QFlags g; g.i = i & f; return g; } -
What does the stack trace look like ?
The lines under qglobal.h ? -
wrote on 14 Aug 2013, 07:19 last edited by
I have a print screen, how do I post a pic on here?
-
You have to use a picture hosting service or a public dropbox folder etc...
-
wrote on 14 Aug 2013, 07:43 last edited by
-
wrote on 14 Aug 2013, 07:44 last edited by
https://www.dropbox.com/s/mosnz8o23elipn5/Qtstack.jpg
doesn't work with a space in the name
-
Looks strange... Just to be on the safe side, delete the build directory completely and re-run your application.
-
wrote on 14 Aug 2013, 08:19 last edited by
ok now it doesn't run again with a bunch of errors:
Running build steps for project Ass1Q1...
Configuration unchanged, skipping qmake step.
Starting: "C:/Qt/2010.04/mingw/bin/mingw32-make.exe" -w
mingw32-make: Entering directoryC:/Unisa/COS3711/assignments/Ass1Q1-build-desktop' C:/Qt/2010.04/mingw/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory
C:/Unisa/COS3711/assignments/Ass1Q1-build-desktop'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"........\Qt\2010.04\qt\include\QtCore" -I"........\Qt\2010.04\qt\include\QtGui" -I"........\Qt\2010.04\qt\include" -I"........\Qt\2010.04\qt\include\ActiveQt" -I"debug" -I"." -I"..\Ass1Q1" -I"." -I"........\Qt\2010.04\qt\mkspecs\win32-g++" -o debug\FilmWriter.o ..\Ass1Q1\FilmWriter.cpp
..\Ass1Q1\FilmWriter.cpp: In member function 'void FilmWriter::saveFilm(Film&)':
..\Ass1Q1\FilmWriter.cpp:10: error: no matching function for call to 'QFileDialog::getSaveFileName(FilmWriter* const, const char [10])'
........\Qt\2010.04\qt\include\QtGui/../../src/gui/dialogs/qfiledialog.h:216: note: candidates are: static QString QFileDialog::getSaveFileName(QWidget*, const QString&, const QString&, const QString&, QString*, QFlagsQFileDialog::Option)
..\Ass1Q1\FilmWriter.cpp:14: error: no matching function for call to 'QMessageBox::critical(FilmWriter* const, const char [6], const char [20])'
........\Qt\2010.04\qt\include\QtGui/../../src/gui/dialogs/qmessagebox.h:202: note: candidates are: static QMessageBox::StandardButton QMessageBox::critical(QWidget*, const QString&, const QString&, QFlagsQMessageBox::StandardButton, QMessageBox::StandardButton)
........\Qt\2010.04\qt\include\QtGui/../../src/gui/dialogs/qmessagebox.h:262: note: static int QMessageBox::critical(QWidget*, const QString&, const QString&, int, int, int)
........\Qt\2010.04\qt\include\QtGui/../../src/gui/dialogs/qmessagebox.h:265: note: static int QMessageBox::critical(QWidget*, const QString&, const QString&, const QString&, const QString&, const QString&, int, int)
........\Qt\2010.04\qt\include\QtGui/../../src/gui/dialogs/qmessagebox.h:272: note: static int QMessageBox::critical(QWidget*, const QString&, const QString&, QMessageBox::StandardButton, QMessageBox::StandardButton)
mingw32-make[1]: Leaving directoryC:/Unisa/COS3711/assignments/Ass1Q1-build-desktop' mingw32-make: Leaving directory
C:/Unisa/COS3711/assignments/Ass1Q1-build-desktop'
mingw32-make[1]: *** [debug/FilmWriter.o] Error 1
mingw32-make: *** [debug] Error 2
The process "C:/Qt/2010.04/mingw/bin/mingw32-make.exe" exited with code %2.
Error while building project Ass1Q1 (target: Desktop)
When executing build step 'Make' -
FilmWriter is not a QWidget, you can't pass it as a parent when you call QFileDialog::getSaveFileName
-
wrote on 14 Aug 2013, 09:15 last edited by
If I make FilmWriter a QWidget the program runs but when I click on the save film button it crashes with: "this application has requested the runtime to terminate it in an unusual way. Please contact the application's support team for more information."
Despite the crash, the program runs without any errors as you can see:
Running build steps for project Ass1Q1...
Configuration unchanged, skipping qmake step.
Starting: "C:/Qt/2010.04/mingw/bin/mingw32-make.exe" -w
mingw32-make: Entering directoryC:/Unisa/COS3711/assignments/Ass1Q1-build-desktop' C:/Qt/2010.04/mingw/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory
C:/Unisa/COS3711/assignments/Ass1Q1-build-desktop'
mingw32-make[1]: Nothing to be done forfirst'. mingw32-make[1]: Leaving directory
C:/Unisa/COS3711/assignments/Ass1Q1-build-desktop'
mingw32-make: Leaving directory `C:/Unisa/COS3711/assignments/Ass1Q1-build-desktop'
The process "C:/Qt/2010.04/mingw/bin/mingw32-make.exe" exited normally.
20/37