如何在 C++/CLI 中通过枚举 class 正确调用带有 switch 的 case 语句?
How to correctly call the case statments with switch by enum class in C++/CLI?
我确实创建了一个枚举以便在不同的选项之间进行选择。在最后阶段,我得到了选择的枚举。
但是我的 switch case 表达式有问题。
枚举:
public enum class MyObjForm { Rechteck, Ellipse };
经典:
public ref class Fenster2: public System::Windows::Form{
private: MyObjForm ^ form;
double breite;
double hoehe;
Fenster2(MyObjForm ^ obj, double h, double b) : form{ obj }, hoehe { h }, breite{ b }
{
InitializeComponent();
}
..
}
切换案例:
switch (form) {
case MyObjForm::Rechteck:
gr->DrawRectangle(pen, 30.0f, 30.0f, breite, hoehe);
break;
case MyObjForm::Ellipse:
gr->DrawEllipse(pen, 30.0f, 30.0f, breite, hoehe);
break;
}
Visual Studio说switch(form)有误应该是整型或者枚举类型。
但是它说:"MyObjForm ^" 类型的 switch 表达式是不允许的。
并且常量表达式不正确。
我没有看到正确答案,但我不喜欢从枚举 class 更改为枚举。 Class 是为了保护它,这样我认为它应该在那里,即使没有它会更容易。我使用枚举是为了学习如何使用它。
public enum class MyObjForm { Rechteck, Ellipse };
MyObjForm ^ form;
托管枚举是值类型,而不是引用类型。 ^
表示托管引用。对值类型的引用不必要地对其进行装箱,这在 C++/CLI 中是一种奇怪的类型,在 C# 中甚至是不可能的。
从 所有 个你使用 MyObjForm
的地方删除 ^
,你会没事的。
我做到了!
switch((MyObjForm)form){
//cases
}
我确实需要 (MyObjForm) 表单才能使用枚举 class 并且它有效
我确实创建了一个枚举以便在不同的选项之间进行选择。在最后阶段,我得到了选择的枚举。
但是我的 switch case 表达式有问题。
枚举:
public enum class MyObjForm { Rechteck, Ellipse };
经典:
public ref class Fenster2: public System::Windows::Form{
private: MyObjForm ^ form;
double breite;
double hoehe;
Fenster2(MyObjForm ^ obj, double h, double b) : form{ obj }, hoehe { h }, breite{ b }
{
InitializeComponent();
}
..
}
切换案例:
switch (form) {
case MyObjForm::Rechteck:
gr->DrawRectangle(pen, 30.0f, 30.0f, breite, hoehe);
break;
case MyObjForm::Ellipse:
gr->DrawEllipse(pen, 30.0f, 30.0f, breite, hoehe);
break;
}
Visual Studio说switch(form)有误应该是整型或者枚举类型。
但是它说:"MyObjForm ^" 类型的 switch 表达式是不允许的。
并且常量表达式不正确。
我没有看到正确答案,但我不喜欢从枚举 class 更改为枚举。 Class 是为了保护它,这样我认为它应该在那里,即使没有它会更容易。我使用枚举是为了学习如何使用它。
public enum class MyObjForm { Rechteck, Ellipse };
MyObjForm ^ form;
托管枚举是值类型,而不是引用类型。 ^
表示托管引用。对值类型的引用不必要地对其进行装箱,这在 C++/CLI 中是一种奇怪的类型,在 C# 中甚至是不可能的。
从 所有 个你使用 MyObjForm
的地方删除 ^
,你会没事的。
我做到了!
switch((MyObjForm)form){
//cases
}
我确实需要 (MyObjForm) 表单才能使用枚举 class 并且它有效