Un esempio di pimpl per CPresenter può essere questo, visto che ci sono vari modi di implementarlo. La cosa interessante è che si può cambiare la struttura pimpl senza che il mondo esterno lo sappia.
Puoi far derivare la pimpl da altre classi, renderla una classe base, aggiungerci un reference counter, sostituirla al volo con un'altra implementazione di pimpl (come fa il pattern state se non ricordo male), ma il tuo programma vedrà solo quanto hai definito in Presenter.h

codice:
#include <vector>

// forward reference necessario per CPresenter(DynamicTextures*  pView);
class DynamicTextures;

class CPresenter {
	public:
		CPresenter();
		CPresenter(DynamicTextures*  pView);
		~CPresenter();
		bool InitCV();
		bool GetTextureFromCam();
		vector<double>* GetListInsertMarkers();
		vector<double>* GetListDeleteMarkers();
	private:
		struct pimpl;
		pimpl* pi;
};



// CPresenter.cpp


#include "Presenter.h"
#include "DynamicTextures.h"
#include "altri_include_necessari"

// Definizione della pimpl per CPresenter.
struct CPresenter::pimpl {
	pimpl() : pView(0), m_pModel(0) { ; }
	~pimpl() { delete m_pModel; } 

	DynamicTextures* pView;
	CModel* m_pModel;	
};


CPresenter::CPresenter() : pi(new CPresenter::pimpl) { ; }

CPresenter::CPresenter( DynamicTextures*  pView ) : pi(new CPresenter::pimpl)
{
	pi->m_view = pView;
	pi->m_pModel = new CModel();
}

CPresenter::~CPresenter(void)
{
	delete pi;
}
	
bool CPresenter::InitCV()
{
	return true;
}	

bool CPresenter::GetTextureFromCam()
{
	CTexture texture = pi->m_pModel->GetTextureFromCam()
	pi->m_view->UpdateTexture(texture.rawdata);
        return true;
}

vector<double>* CPresenter::GetListInsertMarkers()
{

	return NULL;
}

vector<double>* CPresenter::GetListDeleteMarkers()
{

	return NULL;
}