943,954 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 459
  • C++ RSS
Dec 19th, 2008
0

Arrays and Pointers

Expand Post »
Hello again everyone,

Having a really annoying problem using pointers and arrays at the moment,

i'm trying to store a 4x4 matrix as a an array of 16 floats.

so i declare my array like so

C++ Syntax (Toggle Plain Text)
  1.  
  2. float array1[] = {1.0f,0.0f,0.0f,0.0f,
  3. 0.0f,1.0f,0.0f,0.0f,
  4. 0.0f,0.0f,1.0f,0.0f,
  5. 50.0f,0.0f,0.0f,1.0f};

i then pass this into an object using my set function like so

c++ Syntax (Toggle Plain Text)
  1. baseNode->setPositionMatrix(array1);
code for setPositionMatrix()
c++ Syntax (Toggle Plain Text)
  1. void sceneObject::setPositionMatrix(float* nPositionMatrix)
  2. {
  3. positionMatrix = nPositionMatrix;
  4. }

it doesnt throw up any errors, but when it draws with the new matrix it doesnt draw properly, so i investigated and it seems that positionMatrix only holds the first value from nPositionMatrix which is being passed in.

and i'm really not sure what to do.

thanks in advance for anyone who can help me out here.
-Midi
Last edited by midimatt; Dec 19th, 2008 at 7:12 pm.
Similar Threads
Reputation Points: 34
Solved Threads: 4
Light Poster
midimatt is offline Offline
49 posts
since Mar 2008
Dec 19th, 2008
1

Re: Arrays and Pointers

Looks like you are coping the pointer BUT not coping the array.
[This is often called weak-copy].
What happens is the memory for array1 is overwritten with something else and you have a copy of the memory location.
You need something like this

c++ Syntax (Toggle Plain Text)
  1.  
  2. void sceneObject::setPositionMatrix(float* nPositionMatrix)
  3. {
  4. if (!positionMatrix)
  5. positionMatrix = new float[16];
  6. for(int i=0;i<16;i++)
  7. positionMatrix[i]=nPositionMatrix[i];
  8. }

Note: You can use memcpy but the loop is self explanatory.

If postionMatrix is defined float positionMatrix[] you will not need the if
construct. If it is not you must remember to delete [] it later
Reputation Points: 749
Solved Threads: 134
Practically a Master Poster
StuXYZ is offline Offline
660 posts
since Nov 2008
Dec 20th, 2008
0

Re: Arrays and Pointers

Thanks alot

Works perfectly, can't believe that had me confused for so long.

Thanks again.

-Midi
Reputation Points: 34
Solved Threads: 4
Light Poster
midimatt is offline Offline
49 posts
since Mar 2008

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: retrieving handles to windows
Next Thread in C++ Forum Timeline: Help with implementing the binary ADT using a vector, C++





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC