|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
[C++] Interfacce
Odio ammetterlo, ma con C++ sono proprio una schiappa!!!
Eccola domanda: come si fa una interfaccia?? Io sono partito con questo (sto lavorando con OpenCV): Codice:
#include "cv.h"
class CVOperator
{
public:
virtual IplImage* Apply(IplImage* image);
};
A ruota ho poi realizzato questa classe Codice:
#include "CVOperator.h"
#include "cv.h"
class GreyScale: CVOperator
{
public:
GreyScale();
virtual ~GreyScale();
IplImage* Apply(IplImage* image);
};
Infine ho realizzato questo: Codice:
CVImage* CVImage::Apply(CVOperator* cvOperator)
{
return new CVImage(cvOperator->Apply(m_image));
}
Bene...compilazione Ok Linking : Quote:
P.S.: Lo sembra che sembra complesso, ma è per tenere il membro IplImage di CVImage sempre privato e senza un getter |
|
|
|
|
|
|
#2 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
la classe CVOperator dovrebbe essere l'interfaccia? se è così allora l'errore sta nel fatto che un'interfaccia deve contenere solo metodi "pure virtual", ovvero metodi dichiarati con virtual e con "= 0" alla fine; e ovviamente senza implementazione.
in altre parole devi fare un piccolo cambiamento, dopodichè dovrebbe andare: Quote:
Ultima modifica di 71104 : 23-09-2006 alle 21:30. |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Ottimo!!! Problema risolto.
![]() Ora però ce ne è un altro !!! Quote:
Codice:
GreyScale* greyScale = new GreyScale();
CVImage* greyLevelImage = cvImage->Apply(greyScale);
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Ma porcaccia!!!
Mi ero scordato il public nella dichiarazione dell'ereditarietà. Codice:
#include "CVOperator.h"
#include "cv.h"
class GreyScale: public CVOperator
{
public:
GreyScale();
virtual ~GreyScale();
IplImage* Apply(IplImage* image);
};
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
risolto tutto? mi fa piacere, così non hai scuse aggiuntive per tornare a lavorare su DC
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:32.




















