Эти две функции получают и устанавливают число, которое характеризует глубину дампа.
int GetDepth( ) const; void SetDepth( int nNewDepth ); // nNewDepth новая глубина дампа
Я немного отвлекусь и скажу, что операции << работают только при динамической компоновке приложения MFC. Вы должны выбрать USE MFC as shared DLL.
Обычно данные функции применяют для массивов объектов, чтобы в процессе отладки можно было просмотреть содержание всех переменных. Вот так-то можно сделать.
#include "stdafx.h" #include "afxwin.h" #include "iostream.h" class CAge : public CObject { public: CAge(int x); CAge(); #ifdef _DEBUG void Dump(CDumpContext& dc) const; #endif protected: DECLARE_DUCREATE(CAge); private: int xx; }; CAge::CAge(int x) {xx=x;} CAge::CAge() { xx=0; } IMPLEMENT_DUNCREATE(CAge,CObject); #ifdef _DEBUG void CAge::Dump( CDumpContext& dc ) const { CObject::Dump(dc); dc << xx; } #endif void main() { CObArray array; array.Add( new CAge( 21 ) ); array.Add( new CAge( 40 ) ); #ifdef _DEBUG afxDump.SetDepth(0); afxDump << array; afxDump << "---------\n"; afxDump.SetDepth(1); afxDump << array; #endif delete array.GetAt(0) ; delete array.GetAt(1); }
Вот какие результаты в зависимости от установки SetDepth.
a CObArray at $64FDC8 with 2 elements --------- // SetDepth(1) !!!! a CObArray at $64FDC8 with 2 elements [0] = a CObject at $770D10 21 [1] = a CObject at $7707A0 40