У меня происходит следующее: в моем приложении создана команда oaprprofaddvertex:
void oaprprofaddvertex()
{
// TODO: Implement the command
/* ........ */
DocVars.docData().Profile->AddVertex(Vertex1,0);
/* ........ */
}
В класс CDocData добавлено поле
/*......*/
public:
CPrfProfile* Profile;
/*......*/
Которое инициируется в конструкторе CDocData() и уничтожается в ~CDocData();
По моему разумению CDocData должен был создаваться для каждого документа, причем оставаться в памяти в течении работы моего ARX приложения, чтобы я добавлять поля к этому классу и хранить в них свои данные.
Но все совсем не так! Впервые конструктор CDocData вызывается при выполнении
DocVars.docData().Profile->AddVertex(Vertex1,0); ,
когда член класса T& AsdkDataManager::docData() возвращает T& (в моем случае T - это CDocData). И соотетственно удаляется c ~CDocData, когда отрабатывает метод AddVertex члена Profile. Т.е. этот класс вовсе не висит в памяти. Глобальной переменной является лишь экземпляр класса AsdkDataManager, которые и создает (динамически, как и удаляет) экземпляры класса CDocData. Можно предположить, что этот класс (CDocData) создается, верным образом инициализируется и все время находится в памяти только когда создается новый чертеж в AutoCAD"е (при условии что до создания чертежа мое ARX приложение уже загружено), но этого не происходит. (У меня при создании нового чертежа, когда мое ARX приложение уже загружено вообще происходит Access Violation в acad.exe, но это уже, скорее, мои ошибки, хотя я пока не разобрался в причине их появления).
Итог:
1) класс CDocData не имеет экземпляр, который все время находится в памяти, чтобы обеспечить хранение в нем данных для моего приложения.
2) Представитель этого класса (CdocData) создается с помощью метода класса AsdkDataManager. Причем создается "на лету", т.е. возвращаясь по значению методом
T& AsdkDataManager::docData().
Итоговый вопрос: как организовать хранение данных в CDocData (если это возможно), и для чего предназначен этот класс (если хранить в нем данные невозможно, хотя в этом я сомневаюсь).