Avatar billede scorp-d Nybegynder
11. december 2008 - 21:56 Der er 3 kommentarer og
1 løsning

Typecast 2D object array

Hey.

Jeg har et object array som jeg gerne vil typecaste, og det kan jeg ikke lige huske at jeg har prøvet før i Cpp, det her er hvad jeg er kommet til, som dog ikke virker:

Klasse_1 *Object1[9][9] = new Klasse_1 *[9][9];

Typecastes til

Klasse_2 *Object2[9][9] = (Klasse_2 *[9][9])Object1;


På forhånd tak.
Scorp-D
Avatar billede arne_v Ekspert
12. december 2008 - 04:37 #1
2D arrays i C/C++ sucks.

Bedste bud jeg kan få gennem compilerne er:

#include <iostream>

using namespace std;

class X1
{
    public:
        int v;
};

class X2
{
    public:
        int v;
};

const int DIM = 9;
typedef X1 XX1[DIM][DIM];
typedef X2 XX2[DIM][DIM];

int main()
{
    XX1 *x1 = (XX1*)new XX1;
    cout << sizeof(*x1) << endl;
    (*x1)[5][5].v = 123;
    XX2 *x2 = (XX2*)x1;
    cout << sizeof(*x2) << endl;
    cout << (*x2)[5][5].v << endl;
    return 0;
}
Avatar billede scorp-d Nybegynder
14. december 2008 - 13:05 #2
Undskyld jeg først svare nu, men tog en del tid at lave klassen om til det ovenstående...

Men det ser ud til at fungere perfekt, så tak for det... og du smider self. bare et svar.
Avatar billede arne_v Ekspert
14. december 2008 - 15:02 #3
svar
Avatar billede arne_v Ekspert
14. december 2008 - 15:03 #4
Jeg ville nok foretrække helt at undgå 2D arrays.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester