Bonfo
23-09-2006, 19:18
Odio ammetterlo, ma con C++ sono proprio una schiappa!!! :muro:
Eccola domanda: come si fa una interfaccia??
Io sono partito con questo (sto lavorando con OpenCV):
#include "cv.h"
class CVOperator
{
public:
virtual IplImage* Apply(IplImage* image);
};
questo è file CVOperator.h senza che esista un CVOperator.cpp
A ruota ho poi realizzato questa classe
#include "CVOperator.h"
#include "cv.h"
class GreyScale: CVOperator
{
public:
GreyScale();
virtual ~GreyScale();
IplImage* Apply(IplImage* image);
};
e questo è il file GreyScale.h ed esiste il file GreyScale.cpp con il codice
Infine ho realizzato questo:
CVImage* CVImage::Apply(CVOperator* cvOperator)
{
return new CVImage(cvOperator->Apply(m_image));
}
nel codice della classe CVImage.
Bene...compilazione Ok :sofico:
Linking :
./src/GreyScale.o(.text$_ZN10CVOperatorC2Ev[CVOperator::CVOperator()]+0x8): In function `ZN20wxThreadHelperThreadD0Ev':
D:/Valerio/workspace/CVLab/Debug/../src/GreyScale.cpp: undefined reference to `vtable for CVOperator'
:cry: :cry: :muro: :muro:
:help: :help: :help:
P.S.: Lo sembra che sembra complesso, ma è per tenere il membro IplImage di CVImage sempre privato e senza un getter ;)
Eccola domanda: come si fa una interfaccia??
Io sono partito con questo (sto lavorando con OpenCV):
#include "cv.h"
class CVOperator
{
public:
virtual IplImage* Apply(IplImage* image);
};
questo è file CVOperator.h senza che esista un CVOperator.cpp
A ruota ho poi realizzato questa classe
#include "CVOperator.h"
#include "cv.h"
class GreyScale: CVOperator
{
public:
GreyScale();
virtual ~GreyScale();
IplImage* Apply(IplImage* image);
};
e questo è il file GreyScale.h ed esiste il file GreyScale.cpp con il codice
Infine ho realizzato questo:
CVImage* CVImage::Apply(CVOperator* cvOperator)
{
return new CVImage(cvOperator->Apply(m_image));
}
nel codice della classe CVImage.
Bene...compilazione Ok :sofico:
Linking :
./src/GreyScale.o(.text$_ZN10CVOperatorC2Ev[CVOperator::CVOperator()]+0x8): In function `ZN20wxThreadHelperThreadD0Ev':
D:/Valerio/workspace/CVLab/Debug/../src/GreyScale.cpp: undefined reference to `vtable for CVOperator'
:cry: :cry: :muro: :muro:
:help: :help: :help:
P.S.: Lo sembra che sembra complesso, ma è per tenere il membro IplImage di CVImage sempre privato e senza un getter ;)