Показать сообщение отдельно
Старый 28.06.2009, 04:41   #14
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Хитрая хитрость

спасибо всем!
вроде тут сам успел допереть как то)

сделал так:

родительский класс:
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;
	}

}
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием