LINUX.ORG.RU

Сообщения ragzovskii

 

загадочное исчезновение объекта (поля класса)

Форум — Development

Здравствуйте.

Пишу на Visual C++ программу, работающую с СУБД Cache. чтобы позволить С++ работать с объектами из БД, Cache создает классы-проекции, в которых определены типы d_vector, d_obj_vector и так далее. в общем все, что начинается с d_

Controller.h

class Controller { public: Controller(InterSystems::d_connection); ~Controller(void); TreeModel* treeModel; Database dataBase; d_ref<d_obj_vector<Classificator> > cVector; d_ref<d_obj_vector<FactData> > fVector; d_ref<d_obj_vector<Parameter> > pVector; void generate_tree(); d_ref<Classificator> getClByName(std::string); };

Controller.cpp

Controller::Controller(InterSystems::d_connection conn):dataBase(conn) { treeModel = new TreeModel; d_ref<Classificator> classificator; d_ref<FactData> factData; d_ref<Parameter> parameter; cVector = d_obj_vector<Classificator>::create_new(&dataBase); fVector = d_obj_vector<FactData>::create_new(&dataBase); pVector = d_obj_vector<Parameter>::create_new(&dataBase); // Далее идет заполнение этих векторов } void Controller::generate_tree() { treeModel->generateClTree(cVector); } d_ref<Classificator> Controller::getClByName(std::string name) { d_ref<Classificator> tempCls; for(int i=0; i!=cVector->size(); i++) { tempCls = (*cVector); if (tempCls->getName()==name) return tempCls; } return NULL; } Treemodel.cpp

void TreeModel::generateClTree(InterSystems::d_ref<d_obj_vector<Classificat or>> vector) { QTextCodec::setCodecForTr(QTextCodec::codecForName(«cp1251»)); // Для функций перевода tr() QList<QVariant> rootData; rootData << «test»; rootItem = new TreeItem(rootData); for(int i=0; i!=vector->size();i++) { QList<QVariant> tempData; // d_ref<Classificator> tempCls = (*vector); std::string s( vector->operator[](i)->getName() ); QString q(QObject::tr(s.c_str())); tempData.append(q); rootItem->appendChild(new TreeItem(tempData,rootItem)); } } После вызова функции Controller::generateTree() попытка вызвать cVector->size() дает access violation.

не хотелось бы каждый раз заполнять этот вектор из БД. не подскажете решение?

заранее спасибо

ragzovskii
()

RSS подписка на новые темы