Выводим пользовательские классы в отладочный контекст CDumpContext:
virtual void Dump( CDumpContext& dc ) const
Создавая свой класс-потомок от CObject Вы должны перегрузить функцию Dump для вывода Ваших данных описанных в классе. В ходе вывода в отладочный поток выводится и имя класса при условии, что к классу добавлена информация о нем с помощью
IMPLEMENT_DYNAMIC IMPLEMENT_SERIAL
Это отладочная функция и использоваться она должна только в версии Debug следите за этим с помощью #ifdef _DEBUG #endif директивами компиляции. Кроме того эта функция const, поэтому данные менять нельзя. Кроме того вы должны использовать F5 для запуска в режиме отладки. Давайте посмотрим пример:
#include "stdafx.h" #include "afxwin.h" #include "iostream.h" class CMyObject : public CObject { public: #ifdef _DEBUG void AssertValid() const; void Dump(CDumpContext& dc) const; #endif protected: DECLARE_DYNCREATE(CMyObject) private: int x; int y; }; IMPLEMENT_DYNCREATE(CMyObject,CObject); #ifdef _DEBUG void CMyObject::AssertValid() const { CObject::AssertValid(); ASSERT(y==100); } void CMyObject::Dump( CDumpContext& dc ) const { CObject::Dump(dc); dc << "Hello Dump "; } #endif class CAlternativeObject : public CObject { protected: DECLARE_SERIAL(CAlternativeObject); }; IMPLEMENT_SERIAL(CAlternativeObject,CObject,1); void main() { CMyObject cm; #ifdef _DEBUG cm.Dump(afxDump) ; #endif }
Я использовал стандартный контекст afxDump, поэтому весь вывод пойдет в окно отладки. Вот так: