diff --git a/src/field/allocation/FieldAllocator.h b/src/field/allocation/FieldAllocator.h
index 5be0ecf4b0dbd2b5e292d446dd13d62aae9aca23..4ab58c0fe1d82195f28a64627d4577fdd9db3336 100644
--- a/src/field/allocation/FieldAllocator.h
+++ b/src/field/allocation/FieldAllocator.h
@@ -48,6 +48,8 @@ namespace field {
    {
       public:
 
+         virtual ~FieldAllocator() = default;
+
          /**
           * \brief Allocate memory for a field of given sizes and initializes reference counter with one
           *
diff --git a/src/geometry/bodies/DynamicBody.h b/src/geometry/bodies/DynamicBody.h
index dd666f106720f9a45aa01c55710323e1437106d7..a3c6ccca5a61981a381644bfd9e8e4b908b63097 100644
--- a/src/geometry/bodies/DynamicBody.h
+++ b/src/geometry/bodies/DynamicBody.h
@@ -30,6 +30,7 @@ namespace geometry {
 
 class AbstractBody {
 public:
+   virtual ~AbstractBody() = default;
    virtual bool contains (const Vector3<real_t> & point ) const = 0;
    virtual FastOverlapResult fastOverlapCheck ( const Vector3<real_t> & cellMidpoint, real_t dx ) const = 0;
    virtual FastOverlapResult fastOverlapCheck ( const AABB & box ) const = 0;
diff --git a/src/mesh/vtk/VTKMeshWriter.h b/src/mesh/vtk/VTKMeshWriter.h
index cf01acf7e4c5451faa2459703a845228f9a9a8e0..129c456a1696a408484a67fb6b26a6933bfa6c6a 100644
--- a/src/mesh/vtk/VTKMeshWriter.h
+++ b/src/mesh/vtk/VTKMeshWriter.h
@@ -52,6 +52,7 @@ public:
    {
    public:
       DataSource( const std::string & _name ) : name_( _name ) { }
+      virtual ~DataSource() = default;
       typedef T value_type;
       virtual uint_t      numComponents() = 0;
       const std::string & name() { return name_; }
@@ -67,6 +68,7 @@ public:
       typedef typename VTKMeshWriter::Vertices Vertices;
 
       VertexDataSource( const std::string & _name ) : DataSource<T>( _name ) { }
+      virtual ~VertexDataSource() = default;
       virtual void getData( const MeshType &, const Vertices & vertices, std::vector<T> & ) = 0;
    };
 
@@ -78,6 +80,7 @@ public:
       typedef typename VTKMeshWriter::Faces Faces;
 
       FaceDataSource( const std::string & _name ) : DataSource<T>( _name ) { }
+      virtual ~FaceDataSource() = default;
       virtual void getData( const MeshType &, const Faces & faces, std::vector<T> & ) = 0;
    };