Hi Raffaele, I have made some changes and the code now compiles with
VC++ 2005. I believe that your error was to define the template
parameter for BlurGaussSelective class. You wrote this:
BlurGaussSelective filter;
but this is correct:
BlurGaussSelective< any_image<ImageType>::const_view_t,
any_image<ImageType>::const_view_t > filter;
Also, you don't need two template parameters. Please review the code
below and let me know if you have questions or remarks.
#include
#include
#include
#include
using namespace std;
using namespace boost;
using namespace gil;
template <typename TView>
class Filter
{
public:
virtual ~Filter();
virtual void setParameter(uint8_t id, float value);
virtual void apply( TView& source, TView& destination) = 0;
protected:
Filter();
};
template <typename TView >
class BlurGaussSelective : public Filter<TView>
{
public:
BlurGaussSelective();
virtual ~BlurGaussSelective();
void setParameter(uint8_t id, float value);
void apply( TView& source, TView& destination );
};
int main(int argc, char* argv[])
{
typedef mpl::vector ImageType;
typedef mpl::vector ViewType;
any_image<ImageType> source;
any_image<ImageType> dest;
jpeg_read_image("input.jpg", source);
jpeg_read_image("input.jpg", dest);
BlurGaussSelective< any_image<ImageType>::const_view_t > filter;
filter.apply(const_view(source),const_view(dest));
}
Regards,
Christian