c ++类似c#"是"关键字

jav*_*red 1 c++

我正在将这个c#代码重写为c ++:

foreach (var index in indexes)
{
    if (index is MaWorker)
    {
        (index as MaWorker).needCalculate = true;
    }
    if (index is RocWorker)
    {
        (index as RocWorker).needCalculate = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

什么是最好的c ++模拟?我应该使用什么而不是C#is关键字?

rod*_*igo 6

C++ 11也有foreach和自动类型推断.因此,假设您启用了现代编译器并启用了C++ 11:

for (auto index : indexes)
{
    if (auto w = dynamic_cast<MaWorker*>(index))
    {
        w->needCalculate = true;
    }
    if (auto w = dynamic_cast<RocWorker*>(index))
    {
        w->needCalculate = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,您正在使用isas指向每个指针.它们都检查对象的动态类型,但您只需要检查一次.幸运的是,C++具有条件声明的良好语法.