Calling an object from another class
-
Hi guys,
Thank you for your so fast answer !
I tried to understand your solutions but, I'm sorry I'm novice and I really dont understand what I have to do and moreover where I have to put it : .cpp ? .h ?
Can you explain me more precisely please... my level is really low, I'm learning basis, vocabulary etc.Thanks for your help and your patience
-
@Suji
To explain what @Charby mentioned:- provide a getter method in the Camera class:
//in camera.h class Camera { //... public: QCamera* get(); //... } //in camera.cpp QCamera *Camera::get() { return m_camera; }
- in parameters.cpp
#include "camera.h" //... Camera *cam = new Camera; QCamera *m_camera = cam->get();
You still have to initialize the pointer in camera.cpp.
(@Charby correct me if I misinterpreded your post :))
-
It is hard to answer without knowing how your Camera and Parameters are created and where the QCamera member of Camera is initialized. This is one way :
Modify you Camera class adding a getter
class Camera : public QMainWindow { public: Camera(); ~Camera(); QCamera* getCamera(){ return m_camera;} public slots: private: QCamera *m_camera; }
Modify your Parameters class so that it can be constructed using a QCamera*
class Parameters : public QMainWindow { public: Parameters(QCamera* cam){ imageProcessing = cam->m_camera->imageProcessing(); } ~Parameters(); private: QCameraImageProcessing *imageProcessing; };
and here I consider that your Camera and Parameters instances can be created on the stack and that the QCamera is initialized in the Camera constructor :
Camera* cam = new Camera(); Parameters* param = new Parameters( cam->getCamera() ); ... delete param, delete cam;
-
Thanks again @Charby and @the_ .
Why it is so complicated ? :D
I had the "camera.h" in my Parameters.cpp, so why he just dont finds "m_camera" in Parameters.cpp ?
//Parameters.cpp imageProcessing = m_camera->imageProcessing();
like he finds it in Camera.cpp when I initialize a new QCamera ?
QCamera *m_camera
Moreover, compiler dont finds "m_camera" here :
class Parameters : public QMainWindow { public: Parameters(QCamera* cam){ imageProcessing = cam->m_camera->imageProcessing(); } ~Parameters(); private: QCameraImageProcessing *imageProcessing; };
even if i followed all your steps guys...
I know it is hard for you to help me, but my code is not in English, then if i post it all, it will not help you, in my opinion.
Maybe it can ?I don't like to annoy you with my so bad level, so i think I will try to find alone... Your answer are clear, but I don't understand why it is so complicated to do something simple ! :D
-
I dont know your programming skills, but maybe you should start with a quick reading about Classes in C++ :) Try to understand how to access public, private and protected methods and variables.
I hope this link will help a little bit
C++ Classes -
Hi @the_
Yes, you're right, my problem is I learnt alone, so I have a big vocabulary problem, I know how to do things, but not how they're called, I understand the logic, but not the syntax I have to use. :) So thank you for this link, I like this summary !
Actually, my code is able to launch a windows, to obtain the availables cameras in a checklist, when you ckeck one, it is selected and you can open its stream. But now, I created a new windows called "parameters", and i want to pilot my camera's settings from this new window "parameters".
I will work with your solutions guys, thank you.
Have a nice day !
-
@Suji
You don't have a vocabulary problem, you have a problem with understanding the very basics of object-oriented programming and C++ classes.
C++ is a very complex programming language, you can't learn it just by examples. Go to the source: http://mazonka.com/shared/Straustrup4th.pdf
If you come from the world of C (i.e. if you already know C and have programmed in C) then you can go directly to "Part III " in the book, "Abstraction Mechanisms" -
Hi @gyll,
You're right, the problem is I started programming for 2 months. I knew the if, for loop etc from Matlab, but didn't know the "real" programming 2 months ago. I did C++ open classroom courses and bought a book about C.
And as you said :
"you can't learn it just by examples."I'm actually learning from examples from here and there but it's a bad way for understanding the basis.
Thanks for this source, I will study this.
Have a nice day !
-
@Suji
You're welcome.
So i understand that you also have no experience with C either. In this case, just read the whole book except "exceptions", "pointers to methods", and "templates" for now; that will give you a good understanding to start programming.