From c370d1fa5dd07cd603bcce8a383373b6553e65df Mon Sep 17 00:00:00 2001
From: Guillaume Pasero <guillaume.pasero@c-s.fr>
Date: Thu, 9 Nov 2017 16:24:48 +0100
Subject: [PATCH] ENH: Parameter can't be instanciated anymore, HasValue() pure
 virtual

---
 .../ApplicationEngine/include/otbWrapperParameter.h    | 10 ++--------
 .../include/otbWrapperProxyParameter.h                 |  5 +++++
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameter.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameter.h
index 31cec95b16..236411f8f2 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameter.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameter.h
@@ -70,9 +70,6 @@ public:
   typedef itk::SmartPointer<Self>       Pointer;
   typedef itk::SmartPointer<const Self> ConstPointer;
 
-  /** Defining ::New() static method */
-  itkNewMacro(Self);
-
   /** RTTI support */
   itkTypeMacro(Parameter, itk::Object);
 
@@ -151,14 +148,11 @@ public:
   {
   }
 
-  virtual bool HasValue() const
-  {
-    itkExceptionMacro(<<"HasValue() method must be re-implemented by sub-classes.");
-  }
+  virtual bool HasValue() const = 0;
 
   virtual bool HasUserValue() const
   {
-    return HasValue() && m_UserValue;
+    return this->HasValue() && m_UserValue;
   }
 
   virtual void SetUserValue(bool isUserValue)
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperProxyParameter.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperProxyParameter.h
index 1a93c24454..c7594f8c5d 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperProxyParameter.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperProxyParameter.h
@@ -70,6 +70,11 @@ public:
     return m_Target;
     }
 
+  bool HasValue() const override
+    {
+    return m_Target.first.IsNotNull();
+    }
+
 protected:
   ProxyParameter() {}
   ~ProxyParameter() ITK_OVERRIDE {}
-- 
GitLab