Hi! I am trying to solve this for a better understaing of pointers, references and how ofPixels and ofVideoGrabbers manage their contents
Let’s say I have 3 different videoGrabbers, vidGrab0, vidGrab1 and vidGrab2.
vidGrab0.getPixels() returns a pointer to the array where the pixels are stored,
if I want to Access directly to the pixels, I have to use the reference:
That let me acces to any pixel in the pixels array. pixels is an array of ofPixels
I want to store those pointers in an array, that is -if I am right- a pointer to the first pixel of each videoGrabber.
It is my understanding that
// code 2)
ofPixels * pixelsArray[3] // this is my array of pointers to ofPixels
pixelsArray[0] = &videoGrab0.getPixels() // I store a reference to the pointer
That compiles
Later, I will use an auxiliar ofPixel object to mess around with those pixels. And here is where the problem is.
How do I get an array, like in code 1) ?
I guess that the way to do it should be
ofPixels & pixels = pixelsArray[0]; // since I stored a reference of the pointer in the array
But does simply doesn’t work. Can somebody throw some light? Should I approach this using an array of arrays? This isin instead of pixelsArray[3], use pixelsArray[3][] and store the pixels directly?
Thanks a lot!
D!
Hi Arturo,
First of all, thanks for answering these kind of C++ questions.
You are right, what I am storing has to be a pointer, since pixelsArray is define like an arrays of pointer. But if I am not wrong, that’s a pointer to a reference, right?
I am afraid there is something I am not understanding correctly. Using code 1) allows me to access pixels like in an array, pixles[i]
But if I use what you are suggesting, there is no way to use pixels->[i], correct?
I don’t want to take much of your time with this, I am afraid I am just trying to make things too complicated…
Edit: It worked the other way around:
ofPixels pixels = *pixelsArray[0];
Now, I can access to pixels[i]
Thanks for your help! - Now I have to figure out why it worked…
a pointer to a reference doesn’t make really sense, when you dereference (take a pointer) of a reference you are just taking a pointer (the memory address) of the original object,
ofPixels & pixelsRef = *pixelsArray[0] //creates a reference to the orignal pixels
ofPixels pixelsCopy = *pixelsArray[0] //creates a copy of the pixels originally referenced.
Sorry, I know that is not inituitive nor meaningful but at least I get an understanding on what I am doing…