vorwärtsdeklaration mit extern - visitor design pattern

jower

Mitglied
Hallo,
ich habe folgendes Problem:

Die Grundidee bei meinem Code ist, dass ich eine Datenklasse habe, die Bilder einliest und in einer Membervariable ablegt.
Nun möchte ich die eingelesenen Bilder bearbeiten, aber auch nicht die ganzen Bearbeitungsmethoden in die Datenklasse schreiben, sondern eine processingKlasse schreiben, die auf die Daten zugreift. Das möchte ich mit dem vistor design pattern machen. (wenn jemand eine bessere Idee hat nur zu).

Um die Klassen in unterschiedliche Dateien zu schreiben, muss ich vorwärtsdeklarieren. Das gibt aber eine Warnung, die dann zu weiteren Folgefehlermeldungen führt:
warning C4091: 'extern ' : ignored on left of 'CProcess' when no variable is declared
Daher die Frage, wie ich das in den Griff mit dem "extern" bzw. der Vorwärtsdeklaration bekomme?

Damit ihr einen Eindruck bekommt, wie das momentan aussieht, hier der code:

in der Datei process.h der Bearbeitungsklasse steht das:
Code:
// process.h

Extern class CZDataVisitor;

// Klasse, die auf den Data der Klasse CZData arbeiten soll.
class CProcess  : public CZDataVisitor
{
public:
	CProcess  (void);
	~CProcess  (void); 

	virtual void visit( class CZData *ZData );

private:
       void process(CZData *ZData);
};
// ENDE process.h

in der Datei zdata.h der Datenklasse steht das:
Code:
// zdata.h

Extern class CProcess;

// Klasse, die den Zugang zu der Basisklasse CZData erlaubt zur Umsetzung des visitor design pattern
class CZDataVisitor
{
public:
	virtual ~CZDataVisitor (){};
	virtual void visit( class CZDataVisitor *data ) = 0;
};

// Basis Klasse, die die Daten aus dem Sensor ausliest
class CZData : CData {
public:
  	CZData ();
	~CZData ();

	void readSensor(void);
	
	/*! accept visitors (visitor design pattern) 
	@param: visitor external operation visiting this instance
	*/
	void 	accept(CZCamDataVisitor &visitor)	{ visitor.visit(this); }

	IplImage	*getCurCVImage(void) const {return m_image; };
	void		 setCurCVImage(IplImage	* image) 
						{ m_image = image; };
private:

	CvSize	 m_imageSize;
	IplImage	*m_image;

	Cprocess 	*m_processZData;
};
// ENDE zdata.h


Vielen Dank im Voraus. :)
 
Zuletzt bearbeitet:
Zurück