1. Vybor PostgreSQL - OK. Belle ispol'zuet tozhe etu BD. 2. Ja by dobavil class DBKeys - dlja sokrytija vnutrennenostei dostupa k baze dannyh. V buduchem, kogda ustakanitsja BD po zahodam, mozhno budet sozdavat' peremennye DBKeys po nomeru zahoda. 3. Nado s samogo nachala razlichat' metody s 'const' tipom argumentov i bez. To zhe samoe - pro 'const' metody (ne izmenjajuchie sam ob'ekt). Eto zametno oblegchaet otladku - kompiljator sam nahodit sluchainye prisvoenija. Primer: string ClbrData::Comment() const; // ob'ekt ne izmenjaetsja void ClbrData::Comment(const string&); // arg. ne izmenjaetsja (pristavki get/set - sovsem ne objazatel'ny. Rabotaet overloading) 4. Ne sovsem ponjatno - kto javljaetsja sobstvennikom sozdavaemyh ob'ektov: baza dannyh ili klient ? 5. Lutshe vezde gde mozhno vozvrachat' ssylki a ne ukazateli. Esli ssylku nel'zja vozvratit' -> throw exeption Inache zamuchaemsja eti ukazateli proverjat' (primer pro eto umalchivaet) 6. class ClbrDB ja by nasledoval iz map i primer mog by vygljadet' tak: try { ClbrDB db("online"); // a eche lutshe: DB db(...); DBKeys csi_cosmic("CSI","COSMIC","ECOEFF"); // keys set const ClbrData& coef = db[csi_cosmic].Unique(); // chtenie iz DB coef.dump(); // default printing // dlja sozdanija novoi kalibr. - ispol'zuem konstr. // vector(double*,double*) ClbrData def=ClbrDB::makeDefault(csi_cosmic,array,array+size); // makeDefault(...) - staticheskii metod classa ClbrDB def.Comment("...."); def.Time(...); def.StartTime(...); db.push_back(def); // insert to DB } catch(...) { ... } Chto by eto rabotalo, nado (pere)opredelit' const ClbrData & ClbrDB::operator[] (const DBKeys&); i void ...::push_back(...); Nikolay Root BINP, Novosibirsk email : nroot@inp.nsk.su