diff --git a/include/template_fieldnames.h b/include/template_fieldnames.h
index 57c7b6d9d9..8686df5722 100644
--- a/include/template_fieldnames.h
+++ b/include/template_fieldnames.h
@@ -40,7 +40,8 @@ class TEMPLATE_FIELDNAMES_LEXER;
  * NOTE: this must stay a enum class to prevent developers from trying to use it as an array
  * index.
  */
-enum class FIELD_T {
+enum class FIELD_T : int
+{
     USER,                   ///< The field ID hasn't been set yet; field is invalid
     REFERENCE,              ///< Field Reference of part, i.e. "IC21"
     VALUE,                  ///< Field Value of part, i.e. "3.3K"
diff --git a/pcbnew/pcb_field.cpp b/pcbnew/pcb_field.cpp
index 7ccffc8f93..17599e9424 100644
--- a/pcbnew/pcb_field.cpp
+++ b/pcbnew/pcb_field.cpp
@@ -34,6 +34,7 @@
 PCB_FIELD::PCB_FIELD( FOOTPRINT* aParent, FIELD_T aFieldId, const wxString& aName ) :
         PCB_TEXT( aParent, PCB_FIELD_T ),
         m_id( aFieldId ),
+        m_ordinal( static_cast<int>( aFieldId ) ),
         m_name( aName )
 {
     if( m_id == FIELD_T::USER )
@@ -46,6 +47,7 @@ PCB_FIELD::PCB_FIELD( FOOTPRINT* aParent, FIELD_T aFieldId, const wxString& aNam
 PCB_FIELD::PCB_FIELD( const PCB_TEXT& aText, FIELD_T aFieldId, const wxString& aName ) :
         PCB_TEXT( aText ),
         m_id( aFieldId ),
+        m_ordinal( static_cast<int>( aFieldId ) ),
         m_name( aName )
 {
 }