   Pointers to Array in class
  I am having a problem with pointers. I am using C++ and am making a arkanoid game. My problem is i have set up all my code into class. ie a paddle,ball class. I have a class called TextureLoader which loads in textures and stores them in a array which is private to that class. I have to then get that array within the game class in the draw() function to that i can blind that texture to the quads etc.I am pretty stumpped at the moment so any help would be greatfulthanks alot. 
  Why not make it public? ;  Or make a public function:sometype *GetSomeArray(){return thearray;} ;  I know this may be a stupid question, but being that I see it and don''t understand then I will ask.How does returning an array like that work? class bob {public:  int *GetSomeArray() { return thearray; }private:  int thearray[10];};I presume you would also have a size variable contained in there?  so you could do..int *myArray = bobobject->GetSomeArray();int theSize = bobobject->GetArraySize();etc... ;  If you simply declare it as an array[10] not, else you will. Then you could do this:unsigned int GetSomeArray(int *a) {    a=thearray;    return thearraysize;}This will be faster and uses only one line of code instead of 2  and it looks (my opinion) a lot better. ;quote:Original post by Tree Penguin  If you simply declare it as an array[10] not, else you will. Then you could do this:unsigned int GetSomeArray(int *a) {    a=thearray;    return thearraysize;}This will be faster and uses only one line of code instead of 2  and it looks (my opinion) a lot better.   This doesn''t work since "a" is a copy of what is passed when calling GetSomeArray.You should dounsigned int GetSomeArray(int **a) {    *a=thearray;    return thearraysize;}and when calling :int *ptr;int sz = GetSomeArray( &a );hammerstein_02 : this works with pointers. When returning you give to the calling context the adress in memory where the array lies.;quote:This doesn't work since "a" is a copy of what is passed when calling GetSomeArray.You should dounsigned int GetSomeArray(int **a) {*a=thearray;I don't think this is really neccecery, but if mine doesn't work, this should work:unsigned int GetSomeArray(int *a) {a=&thearray[0];which is exactly a=thearray;= on a pointer copies the address, so it should work.   [edited by - Tree Penguin on February 5, 2004 7:01:21 AM];  Tree Penguin - the problem is you're not copying out the new value of the array.  Example:Before calling GetSomeArray():ptr = pointer to int, value = garbage (uninitialised)Upon calling GetSomeArray():a = pointer to int, value is the same as garbage, but a is a different objectUpon calling a=thearray;:a now points to thearray but ptr still points to garbage.Upon returning from GetSomeArray():ptr still points to garbage.The correct way, as MV pointed out is to do:ptr = pointer to int, value = garbage (uninitialised)Upon calling GetSomeArray():a = pointer to ptrUpon calling *a = thearray;:a is unchanged, ptr now points to thearray;Upon returning from GetSomeArray():ptr points to thearray.A better implementation would be:unsigned int getTextureArray(int*& destination){destination = theArray;return theArraySize;}    Although an even better implementation might be: class TextureManager{public:void loadTexture(std::string filename);GLuint getTexture(std::string name);private:std::map<std::string, GLuint> textures;};void TextureManager::loadTexture(std::string filename){if (textures.find(filename) != textures.end()){// already have this texture, no need to load it againreturn;}/*insert code here to load the image andcreate a texture with id textureId*/textures.insert(std::make_pair(filename, textureId));}GLuint TextureManager::getTexture(std::string name){if (textures.find(filename) == textures.end()){// haven't got that texture.  Could try loading it but// should probably just throw an exception}return textures.find(filename)->second;}I haven't tried compiling that, so there are probably errors, but it gives the general idea.  If some on that looks new to you (std::map, e.t.c.) consult your favourite standard library reference.EnigmaEDIT: missed a newline and cleaned up the first bit.   EDIT2: my final example wa potentially confusing   [edited by - Enigma on February 5, 2004 7:23:21 AM]