gpt4 book ai didi

.net - C++/CLI 打开字符串

转载 作者:行者123 更新时间:2023-12-01 12:01:22 35 4
gpt4 key购买 nike

在 C# 等其他 .NET 语言中,您可以打开字符串值:

string val = GetVal();
switch(val)
{
case "val1":
DoSomething();
break;
case "val2":
default:
DoSomethingElse();
break;
}

在 C++/CLI 中似乎不是这种情况

System::String ^val = GetVal();
switch(val) // Compile error
{
// Snip
}

是否有特殊的关键字或其他方法可以使它像在 C# 中一样在 C++/CLI 中工作?

最佳答案

实际上,如果测试的对象定义了到整数的转换,您可以使用整数以外的任何东西(有时由整数类型指定)。

字符串对象没有。

但是,您可以创建一个包含字符串键(检查比较是否得到妥善处理)和指向实现某些接口(interface)的类的指针作为值的映射:

class MyInterface {
public:
virtual void doit() = 0;
}

class FirstBehavior : public MyInterface {
public:
virtual void doit() {
// do something
}
}

class SecondBehavior : public MyInterface {
public:
virtual void doit() {
// do something else
}
}

...
map<string,MyInterface*> stringSwitch;
stringSwitch["val1"] = new FirstBehavior();
stringSwitch["val2"] = new SecondBehavior();
...

// you will have to check that your string is a valid one first...
stringSwitch[val]->doit();

实现起来有点长,但设计得很好。

关于.net - C++/CLI 打开字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1035544/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com