我正在将这个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关键字?
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)
请注意,您正在使用is和as指向每个指针.它们都检查对象的动态类型,但您只需要检查一次.幸运的是,C++具有条件声明的良好语法.