Commit 473c4050 authored by Jan Möbius's avatar Jan Möbius
Browse files

Merge branch 'cpp_check_fixes' into 'master'

Fixed some cppcheck warnings

See merge request !161
parents b487c49b 7765cef6
...@@ -18,7 +18,7 @@ echo -e "${NC}" ...@@ -18,7 +18,7 @@ echo -e "${NC}"
echo "Please Wait ..." echo "Please Wait ..."
# Run cppcheck and output into file # Run cppcheck and output into file
cppcheck --enable=all . -I src -i Doc/ --force --suppress=unusedFunction --suppress=missingIncludeSystem --quiet -Umin -Umax -UBMPOSTFIX -DOPENMESHDLLEXPORT="" &> cppcheck.log cppcheck --enable=all . --force --suppress=unusedFunction --suppress=missingIncludeSystem --quiet -Umin -Umax -UCTIME -UBMPOSTFIX -DOPENMESHDLLEXPORT="" -UPRIVATE_NODE_TYPESYSTEM_SOURCE -USO_NODE_ABSTRACT_SOURCE -USO_NODE_SOURCE -UCLOCK_REALTIME_HR -i src/OpenMesh/Apps/Unsupported/ -i Doc/ &> cppcheck.log
echo -e "${OUTPUT}" echo -e "${OUTPUT}"
echo "==============================================================================" echo "=============================================================================="
...@@ -38,7 +38,7 @@ echo "CPPCHECK Summary" ...@@ -38,7 +38,7 @@ echo "CPPCHECK Summary"
echo "==============================================================================" echo "=============================================================================="
echo -e "${NC}" echo -e "${NC}"
MAX_COUNT=6 MAX_COUNT=0
if [ $COUNT -gt $MAX_COUNT ]; then if [ $COUNT -gt $MAX_COUNT ]; then
echo -e ${WARNING} echo -e ${WARNING}
......
...@@ -13,7 +13,7 @@ public: ...@@ -13,7 +13,7 @@ public:
public: public:
// construct with a given mesh // construct with a given mesh
SmootherT(Mesh& _mesh) explicit SmootherT(Mesh& _mesh)
: mesh_(_mesh) : mesh_(_mesh)
{ {
mesh_.add_property( cog_ ); mesh_.add_property( cog_ );
......
...@@ -56,7 +56,7 @@ public: ...@@ -56,7 +56,7 @@ public:
typedef T value_type; typedef T value_type;
CmdOption(const T& _val) : val_(_val), valid_(true), enabled_(false) { } explicit CmdOption(const T& _val) : val_(_val), valid_(true), enabled_(false) { }
CmdOption() : val_(T()),valid_(false), enabled_(false) { } CmdOption() : val_(T()),valid_(false), enabled_(false) { }
// has been set and has a value // has been set and has a value
......
...@@ -123,7 +123,7 @@ public: ...@@ -123,7 +123,7 @@ public:
/// default constructor /// default constructor
DecimaterViewerWidget(QWidget* _parent=0) explicit DecimaterViewerWidget(QWidget* _parent=0)
: MeshViewerWidget(_parent), : MeshViewerWidget(_parent),
animate_(false), animate_(false),
timer_(0), timer_(0),
......
...@@ -82,7 +82,7 @@ class MeshViewerWidget : public MeshViewerWidgetT<MyMesh> ...@@ -82,7 +82,7 @@ class MeshViewerWidget : public MeshViewerWidgetT<MyMesh>
Q_OBJECT Q_OBJECT
public: public:
/// default constructor /// default constructor
MeshViewerWidget(QWidget* parent=0) : MeshViewerWidgetT<MyMesh>(parent) explicit MeshViewerWidget(QWidget* parent=0) : MeshViewerWidgetT<MyMesh>(parent)
{} {}
OpenMesh::IO::Options& options() { return _options; } OpenMesh::IO::Options& options() { return _options; }
const OpenMesh::IO::Options& options() const { return _options; } const OpenMesh::IO::Options& options() const { return _options; }
......
...@@ -139,17 +139,15 @@ void VDPMClientViewerWidget::mesh_coloring() ...@@ -139,17 +139,15 @@ void VDPMClientViewerWidget::mesh_coloring()
vEnd(mesh_.vertices_end()); vEnd(mesh_.vertices_end());
VHierarchyNodeHandle node_handle; VHierarchyNodeHandle node_handle;
float ratio;
unsigned char r, g, b;
for (; vIt!=vEnd; ++vIt) for (; vIt!=vEnd; ++vIt)
{ {
node_handle = mesh_.data(*vIt).vhierarchy_node_handle(); node_handle = mesh_.data(*vIt).vhierarchy_node_handle();
ratio = vhierarchy_.node(node_handle).ratio(); const float ratio = vhierarchy_.node(node_handle).ratio();
r = (unsigned char) ((1.0f - ratio) * myYellow[0] + ratio * myBlue[0]); const unsigned char r = (unsigned char) ((1.0f - ratio) * myYellow[0] + ratio * myBlue[0]);
g = (unsigned char) ((1.0f - ratio) * myYellow[1] + ratio * myBlue[1]); const unsigned char g = (unsigned char) ((1.0f - ratio) * myYellow[1] + ratio * myBlue[1]);
b = (unsigned char) ((1.0f - ratio) * myYellow[2] + ratio * myBlue[2]); const unsigned char b = (unsigned char) ((1.0f - ratio) * myYellow[2] + ratio * myBlue[2]);
mesh_.set_color(*vIt, OpenMesh::Vec3uc(r,g,b)); mesh_.set_color(*vIt, OpenMesh::Vec3uc(r,g,b));
} }
......
...@@ -77,7 +77,7 @@ private: ...@@ -77,7 +77,7 @@ private:
public: public:
ServerSideVDPM() { clear(); } ServerSideVDPM() :name_(""),tree_id_bits_(0) { clear(); }
void clear(); void clear();
const char* name() const { return name_; } const char* name() const { return name_; }
......
...@@ -138,17 +138,15 @@ void VDPMClientViewerWidget::mesh_coloring() ...@@ -138,17 +138,15 @@ void VDPMClientViewerWidget::mesh_coloring()
vEnd(mesh_.vertices_end()); vEnd(mesh_.vertices_end());
VHierarchyNodeHandle node_handle; VHierarchyNodeHandle node_handle;
float ratio;
unsigned char r, g, b;
for (; vIt!=vEnd; ++vIt) for (; vIt!=vEnd; ++vIt)
{ {
node_handle = mesh_.data(*vIt).vhierarchy_node_handle(); node_handle = mesh_.data(*vIt).vhierarchy_node_handle();
ratio = vhierarchy_.node(node_handle).ratio(); const float ratio = vhierarchy_.node(node_handle).ratio();
r = (unsigned char) ((1.0f - ratio) * myYellow[0] + ratio * myBlue[0]); const unsigned char r = (unsigned char) ((1.0f - ratio) * myYellow[0] + ratio * myBlue[0]);
g = (unsigned char) ((1.0f - ratio) * myYellow[1] + ratio * myBlue[1]); const unsigned char g = (unsigned char) ((1.0f - ratio) * myYellow[1] + ratio * myBlue[1]);
b = (unsigned char) ((1.0f - ratio) * myYellow[2] + ratio * myBlue[2]); const unsigned char b = (unsigned char) ((1.0f - ratio) * myYellow[2] + ratio * myBlue[2]);
mesh_.set_color(*vIt, OpenMesh::Vec3uc(r,g,b)); mesh_.set_color(*vIt, OpenMesh::Vec3uc(r,g,b));
} }
......
...@@ -76,7 +76,7 @@ private: ...@@ -76,7 +76,7 @@ private:
public: public:
ServerSideVDPM() { clear(); } ServerSideVDPM(): name_(""),tree_id_bits_(0) { clear(); }
void clear(); void clear();
const char* name() const { return name_; } const char* name() const { return name_; }
......
...@@ -89,7 +89,7 @@ public: ...@@ -89,7 +89,7 @@ public:
public: public:
/// Constructor /// Constructor
ModBalancerT( D &_dec ) explicit ModBalancerT( D &_dec )
: BaseModQ( _dec ), : BaseModQ( _dec ),
max_level_(0), n_roots_(0), n_vertices_(0) max_level_(0), n_roots_(0), n_vertices_(0)
{ {
......
...@@ -1062,7 +1062,7 @@ std::string get_property_name(std::string _string1, std::string _string2) { ...@@ -1062,7 +1062,7 @@ std::string get_property_name(std::string _string1, std::string _string2) {
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
_PLYReader_::ValueType get_property_type(std::string _string1, std::string _string2) { _PLYReader_::ValueType get_property_type(std::string& _string1, std::string& _string2) {
if (_string1 == "float32" || _string2 == "float32") if (_string1 == "float32" || _string2 == "float32")
......
...@@ -176,7 +176,7 @@ class CmpVec ...@@ -176,7 +176,7 @@ class CmpVec
{ {
public: public:
CmpVec(float _eps=FLT_MIN) : eps_(_eps) {} explicit CmpVec(float _eps=FLT_MIN) : eps_(_eps) {}
bool operator()( const Vec3f& _v0, const Vec3f& _v1 ) const bool operator()( const Vec3f& _v0, const Vec3f& _v1 ) const
{ {
......
...@@ -163,7 +163,7 @@ _OMWriter_::write(std::ostream& _os, BaseExporter& _be, Options _opt, std::strea ...@@ -163,7 +163,7 @@ _OMWriter_::write(std::ostream& _os, BaseExporter& _be, Options _opt, std::strea
#ifndef DOXY_IGNORE_THIS #ifndef DOXY_IGNORE_THIS
template <typename T> struct Enabler template <typename T> struct Enabler
{ {
Enabler( T& obj ) : obj_(obj) explicit Enabler( T& obj ) : obj_(obj)
{} {}
~Enabler() { obj_.enable(); } ~Enabler() { obj_.enable(); }
...@@ -302,7 +302,8 @@ bool _OMWriter_::write_binary(std::ostream& _os, BaseExporter& _be, ...@@ -302,7 +302,8 @@ bool _OMWriter_::write_binary(std::ostream& _os, BaseExporter& _be,
for (i=0, nF=header.n_faces_; i<nF; ++i) for (i=0, nF=header.n_faces_; i<nF; ++i)
{ {
nV = _be.get_vhandles(FaceHandle(i), vhandles); //nV = _be.get_vhandles(FaceHandle(i), vhandles);
_be.get_vhandles(FaceHandle(i), vhandles);
if ( header.mesh_ == 'P' ) if ( header.mesh_ == 'P' )
bytes += store( _os, vhandles.size(), OMFormat::Chunk::Integer_16, swap ); bytes += store( _os, vhandles.size(), OMFormat::Chunk::Integer_16, swap );
......
...@@ -158,7 +158,7 @@ write_stla(const std::string& _filename, BaseExporter& _be, Options /* _opt */) ...@@ -158,7 +158,7 @@ write_stla(const std::string& _filename, BaseExporter& _be, Options /* _opt */)
int i, nF(int(_be.n_faces())), nV; int i, nF(int(_be.n_faces()));
Vec3f a, b, c, n; Vec3f a, b, c, n;
std::vector<VertexHandle> vhandles; std::vector<VertexHandle> vhandles;
FaceHandle fh; FaceHandle fh;
...@@ -172,7 +172,7 @@ write_stla(const std::string& _filename, BaseExporter& _be, Options /* _opt */) ...@@ -172,7 +172,7 @@ write_stla(const std::string& _filename, BaseExporter& _be, Options /* _opt */)
for (i=0; i<nF; ++i) for (i=0; i<nF; ++i)
{ {
fh = FaceHandle(i); fh = FaceHandle(i);
nV = _be.get_vhandles(fh, vhandles); const int nV = _be.get_vhandles(fh, vhandles);
if (nV == 3) if (nV == 3)
{ {
...@@ -211,7 +211,7 @@ write_stla(std::ostream& _out, BaseExporter& _be, Options /* _opt */, std::strea ...@@ -211,7 +211,7 @@ write_stla(std::ostream& _out, BaseExporter& _be, Options /* _opt */, std::strea
{ {
omlog() << "[STLWriter] : write ascii file\n"; omlog() << "[STLWriter] : write ascii file\n";
int i, nF(int(_be.n_faces())), nV; int i, nF(int(_be.n_faces()));
Vec3f a, b, c, n; Vec3f a, b, c, n;
std::vector<VertexHandle> vhandles; std::vector<VertexHandle> vhandles;
FaceHandle fh; FaceHandle fh;
...@@ -226,7 +226,7 @@ write_stla(std::ostream& _out, BaseExporter& _be, Options /* _opt */, std::strea ...@@ -226,7 +226,7 @@ write_stla(std::ostream& _out, BaseExporter& _be, Options /* _opt */, std::strea
for (i=0; i<nF; ++i) for (i=0; i<nF; ++i)
{ {
fh = FaceHandle(i); fh = FaceHandle(i);
nV = _be.get_vhandles(fh, vhandles); const int nV = _be.get_vhandles(fh, vhandles);
if (nV == 3) if (nV == 3)
{ {
...@@ -273,7 +273,7 @@ write_stlb(const std::string& _filename, BaseExporter& _be, Options /* _opt */) ...@@ -273,7 +273,7 @@ write_stlb(const std::string& _filename, BaseExporter& _be, Options /* _opt */)
} }
int i, nF(int(_be.n_faces())), nV; int i, nF(int(_be.n_faces()));
Vec3f a, b, c, n; Vec3f a, b, c, n;
std::vector<VertexHandle> vhandles; std::vector<VertexHandle> vhandles;
FaceHandle fh; FaceHandle fh;
...@@ -294,7 +294,7 @@ write_stlb(const std::string& _filename, BaseExporter& _be, Options /* _opt */) ...@@ -294,7 +294,7 @@ write_stlb(const std::string& _filename, BaseExporter& _be, Options /* _opt */)
for (i=0; i<nF; ++i) for (i=0; i<nF; ++i)
{ {
fh = FaceHandle(i); fh = FaceHandle(i);
nV = _be.get_vhandles(fh, vhandles); const int nV = _be.get_vhandles(fh, vhandles);
if (nV == 3) if (nV == 3)
{ {
...@@ -344,7 +344,7 @@ write_stlb(std::ostream& _out, BaseExporter& _be, Options /* _opt */, std::strea ...@@ -344,7 +344,7 @@ write_stlb(std::ostream& _out, BaseExporter& _be, Options /* _opt */, std::strea
omlog() << "[STLWriter] : write binary file\n"; omlog() << "[STLWriter] : write binary file\n";
int i, nF(int(_be.n_faces())), nV; int i, nF(int(_be.n_faces()));
Vec3f a, b, c, n; Vec3f a, b, c, n;
std::vector<VertexHandle> vhandles; std::vector<VertexHandle> vhandles;
FaceHandle fh; FaceHandle fh;
...@@ -366,7 +366,7 @@ write_stlb(std::ostream& _out, BaseExporter& _be, Options /* _opt */, std::strea ...@@ -366,7 +366,7 @@ write_stlb(std::ostream& _out, BaseExporter& _be, Options /* _opt */, std::strea
for (i=0; i<nF; ++i) for (i=0; i<nF; ++i)
{ {
fh = FaceHandle(i); fh = FaceHandle(i);
nV = _be.get_vhandles(fh, vhandles); const int nV = _be.get_vhandles(fh, vhandles);
if (nV == 3) if (nV == 3)
{ {
......
...@@ -13,7 +13,7 @@ public: ...@@ -13,7 +13,7 @@ public:
public: public:
// construct with a given mesh // construct with a given mesh
SmootherT(Mesh& _mesh) explicit SmootherT(Mesh& _mesh)
: mesh_(_mesh) : mesh_(_mesh)
{ {
mesh_.add_property( cog_ ); mesh_.add_property( cog_ );
......
...@@ -104,7 +104,7 @@ public: ...@@ -104,7 +104,7 @@ public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
Tvv3(M& _mesh) : Inherited(_mesh) { Base::set_subdiv_type(3); }; explicit Tvv3(M& _mesh) : Inherited(_mesh) { Base::set_subdiv_type(3); };
void raise(typename M::FaceHandle& _fh, state_t _target_state); void raise(typename M::FaceHandle& _fh, state_t _target_state);
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
...@@ -129,7 +129,7 @@ public: ...@@ -129,7 +129,7 @@ public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
Tvv4(M& _mesh) : Inherited(_mesh) { Base::set_subdiv_type(4); }; explicit Tvv4(M& _mesh) : Inherited(_mesh) { Base::set_subdiv_type(4); };
void raise(typename M::FaceHandle& _fh, state_t _target_state); void raise(typename M::FaceHandle& _fh, state_t _target_state);
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
...@@ -157,7 +157,7 @@ private: ...@@ -157,7 +157,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
VF(M& _mesh) : Inherited(_mesh) {} explicit VF(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::FaceHandle& _fh, state_t _target_state); void raise(typename M::FaceHandle& _fh, state_t _target_state);
MIPS_WARN_WA(Edge) MIPS_WARN_WA(Edge)
...@@ -179,7 +179,7 @@ private: ...@@ -179,7 +179,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
FF(M& _mesh) : Inherited(_mesh) {} explicit FF(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::FaceHandle& _fh, state_t _target_state); void raise(typename M::FaceHandle& _fh, state_t _target_state);
MIPS_WARN_WA(Vertex) // avoid warning MIPS_WARN_WA(Vertex) // avoid warning
...@@ -201,7 +201,7 @@ private: ...@@ -201,7 +201,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
FFc(M& _mesh) : Inherited(_mesh) {} explicit FFc(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::FaceHandle& _fh, state_t _target_state); void raise(typename M::FaceHandle& _fh, state_t _target_state);
MIPS_WARN_WA(Vertex) // avoid warning MIPS_WARN_WA(Vertex) // avoid warning
...@@ -223,7 +223,7 @@ private: ...@@ -223,7 +223,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
FV(M& _mesh) : Inherited(_mesh) {} explicit FV(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face) // avoid warning MIPS_WARN_WA(Face) // avoid warning
...@@ -245,7 +245,7 @@ private: ...@@ -245,7 +245,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
FVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); } explicit FVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); }
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face) // avoid warning MIPS_WARN_WA(Face) // avoid warning
...@@ -282,7 +282,7 @@ public: ...@@ -282,7 +282,7 @@ public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
VV(M& _mesh) : Inherited(_mesh) {} explicit VV(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face) // avoid warning MIPS_WARN_WA(Face) // avoid warning
...@@ -304,7 +304,7 @@ private: ...@@ -304,7 +304,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
VVc(M& _mesh) : Inherited(_mesh) {} explicit VVc(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face) // avoid warning MIPS_WARN_WA(Face) // avoid warning
...@@ -326,7 +326,7 @@ private: ...@@ -326,7 +326,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
VE(M& _mesh) : Inherited(_mesh) {} explicit VE(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::EdgeHandle& _eh, state_t _target_state); void raise(typename M::EdgeHandle& _eh, state_t _target_state);
MIPS_WARN_WA(Face ) // avoid warning MIPS_WARN_WA(Face ) // avoid warning
...@@ -348,7 +348,7 @@ private: ...@@ -348,7 +348,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
VdE(M& _mesh) : Inherited(_mesh) {} explicit VdE(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::EdgeHandle& _eh, state_t _target_state); void raise(typename M::EdgeHandle& _eh, state_t _target_state);
MIPS_WARN_WA(Face ) // avoid warning MIPS_WARN_WA(Face ) // avoid warning
...@@ -370,7 +370,7 @@ private: ...@@ -370,7 +370,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
VdEc(M& _mesh) : Inherited(_mesh) {} explicit VdEc(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::EdgeHandle& _eh, state_t _target_state); void raise(typename M::EdgeHandle& _eh, state_t _target_state);
MIPS_WARN_WA(Face ) // avoid warning MIPS_WARN_WA(Face ) // avoid warning
...@@ -392,7 +392,7 @@ private: ...@@ -392,7 +392,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
EV(M& _mesh) : Inherited(_mesh) {} explicit EV(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face) // avoid warning MIPS_WARN_WA(Face) // avoid warning
...@@ -415,7 +415,7 @@ public: ...@@ -415,7 +415,7 @@ public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
EVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); } explicit EVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); }
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face) // avoid warning MIPS_WARN_WA(Face) // avoid warning
...@@ -451,7 +451,7 @@ private: ...@@ -451,7 +451,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
EF(M& _mesh) : Inherited(_mesh) {} explicit EF(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::FaceHandle& _fh, state_t _target_state); void raise(typename M::FaceHandle& _fh, state_t _target_state);
MIPS_WARN_WA(Edge ) // avoid warning MIPS_WARN_WA(Edge ) // avoid warning
...@@ -473,7 +473,7 @@ private: ...@@ -473,7 +473,7 @@ private:
public: public:
typedef RuleInterfaceT<M> Inherited; typedef RuleInterfaceT<M> Inherited;
FE(M& _mesh) : Inherited(_mesh) {} explicit FE(M& _mesh) : Inherited(_mesh) {}