Advertisement

Possible to cast a pointer to a certain type of array?

Started by July 21, 2001 02:06 PM
1 comment, last by Vanukoff 23 years, 7 months ago
I have two structures that look like this:


struct Foo
{
    // stuff
    unsigned char data[ 256 ][ 16 ][ 16 ];
    // other stuff
}

struct Bar
{
    Foo* pfoo;
    // other stuff 
}

 
And I have a function which looks like:


void Funky(Bar* pbar)
{
     // code
     for(int i=0; i<200; i++)
     {
         for(int j=0; j<200; j++)
         {
             // code here uses pbar->pfoo->data[ a ][ c ];
         }
     }
}

 </pre> 

I''d like to alias pbar->pfoo->data like this:

<pre>

void Funky(Bar* pbar)
{
     // code
 
     unsigned char* alias = pbar->pfoo->data;

     for(int i=0; i<200; i++)
     {
         for(int j=0; j<200; j++)
         {
             // code here now uses alias[ a ][ c ];
         }
     }
}

 </pre> 

But I cannot do the above alias, because I lose dimensional information. Is there a way to cast ''alias'' so the compiler knows I want the dimensions 256*16*16 … ?



    
You don''t have dimentions.
Anyway-its shouldn''t be too hard to convert the three to a linear.
Or alternately create an array of pointers to the array, and use it in the same way as your normal array.
Advertisement

Yeah, I could''ve used it as a linear, but didn''t want to clutter that line (the real code is more complex). I got it working by doing this:

unsigned char (*alias)[16][16] = pbar->pfoo->data; 


Looks really weird, but it works.


This topic is closed to new replies.

Advertisement