2013-06-17 22 views
6

Ich habe vor kurzem begonnen, arbeiten die C++/CLI-Code verwaltet werden, aber ich habe immer Aufzählungen definiert wie folgt:Der Unterschied zwischen Enum und Enum-Klasse?

enum FV_MODE 
{ 
    IDLE,DRAG,ADD_HITBOX,ADD_HURTBOX 
}; 

Bis heute, als ich mit der Fehlermeldung getroffen:

cannot define an unmanaged enum 'FViewer::FV_MODE' inside managed 'FViewer' 
1>   use 'enum class' 

Wie in der Nachricht und auf verschiedenen Stack-Überlauf Fragen vorgeschlagen, meinen Code zu ändern:

enum class FV_MODE 
{ 
    IDLE,DRAG,ADD_HITBOX,ADD_HURTBOX 
}; 

schnell behoben das Problem.

Allerdings sind mir die Unterschiede zwischen den zwei verschiedenen Möglichkeiten, die ich jetzt kenne, noch nicht bewusst. Könnte jemand helfen, für mich zu klären? Und was macht "Enum-Klasse" für verwalteten Code geeigneter?

Vielen Dank im Voraus,

Guy

+2

@juanchopanza Nein! C++/CLI ist nicht C++ 11. –

+0

@ R.MartinhoFernandes Das C++ - Tag auf diese Fragen wirft mich immer. – juanchopanza

Antwort

4

Der Unterschied zwischen unmanaged Aufzählungen und verwaltet Aufzählungen, die Aufzählungen mehr immer für verwalteten Code verwaltet macht ist, dass verwaltet Aufzählungen sind Code und nicht verwalteten Aufzählungen sind verwaltet nicht verwalteten Code. Verwaltete Enums können über die Metadaten des verwalteten Codes kommuniziert werden. Nicht verwaltete Enums können nicht, was bedeutet, dass sie sich nicht als Teil einer verwalteten Klasse manifestieren.

+0

Okay nach dem Bearbeiten zu diesem verstehe ich sie mehr. –

+3

Geh nach Hause, deine Kreise sind gebraten. – Xeo

+0

@GuyJoelMcLean - Sie lesen es bis zum Ende? :) –

Verwandte Themen