спасибо всем!
вроде тут сам успел допереть как то)
сделал так:
родительский класс:
class access
{
public:
int **ivec;
bool **bvec;
float **fvec;
string **svec;
};
дочерний (начало):
class material:public access{
private:
float alpha, brightness, contrast,...
конструктор дочернего класса (Начало):
(биндим к массиву содержимое объекта класса))
material::material()
{
svec = new (string*[3]);
fvec = new (float*[16]);
bvec = new (bool*[25]);
fvec[0]=α
fvec[1]=&brightness;
fvec[2]=&contrast;
загрузка:
access *Temp;
while (!myfile.eof())
{
objtype=readbyte(&myfile);
if (objtype==1) {
material *mat=new material; tempname="materials"; time=int(clock());
Temp = mat;
}
params=readlong(&myfile);
for(p=0;p<params;p++)
{
paramnum=readbyte(&myfile);
paramlen=readbyte(&myfile);
if (paramlen==1) *(Temp->bvec[paramnum-1])=bool(readbyte(&myfile));
if (paramlen==2) *(Temp->ivec[paramnum-1])=(readshort(&myfile));
if (paramlen==3) *(Temp->ivec[paramnum-1])=(readlong(&myfile));
if (paramlen==4) *(Temp->fvec[paramnum-1])=(readfloat(&myfile));
if (paramlen==5) *(Temp->svec[paramnum-1])=(readstringf(&myfile));
}
time=int(clock())-time;
cout << tempname << " loaded in " << time << "ms." << endl;
}
}