Plazma sayı 3, sayfa 80

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 80

Timer() ;

~Timer() ;

Timer(Timer const &timer) ;

Timer &operator =(Timer const &timer) ;

void Start() ;

void Stop() ;

double GetTime() const ;

private:

class Implementation ;

Implementation *pimpl_ ;

Timer.cpp’yi hazırlarken private datalara bu pointer üzerinden ulaşmamız gerekecek. Timer.cpp içinde önce bu yeni sınıfı tanımlamamız gerekiyor.

#include <windows.h>

#include "Timer.h"

class Timer::Implementation { friend class Timer ;

private:

bool counting_ ;

LARGE_INTEGER frequency_ ;

LARGE_INTEGER zero_ ;

Tüm datayı private yapıp sadece Timer sınıfına erişim vermek bu sınıfın normal kullanım için olmadığını, sadece Timer’ın arka plandaki işlerini yürütmek için gerektiğini rahatça anlatıyor (ufak bir comment satırının yerini tutamaz tabii).

Bu yönteme opak pointer dedik, çünkü kullanıcı bu pointerın arkasında neler döndüğünü göremiyor, haliyle de bilemiyor. (Zaten bilmemeli?!)

Timer constructor'ımızda bu implementasyon objemizi oluşturup destructor'da yok etmemiz gerekiyor.

Timer::Timer()

Klavyeyle gezinmek için ← ve → tuşları.