我有Vector<ItemRenderer^>
。ItemRenderer
是一种抽象类型。我想过滤所有内容ConcreteRenderer
并对它们执行一些操作。
我试过的:
for each (auto renderer in m_parts)
if (renderer->GetType() == ConcreteRenderer::typeid)
{
auto item = dynamic_cast<ConcreteRenderer^>(renderer);
item->SetState(1);
}
但是renderer
有类型VectorProxy<ItemRenderer^>
并且没有任何作用。如何解决?
更新:
所以我使用了以下代码:
for each (auto renderer in m_parts)
{
auto item = dynamic_cast<ConcreteRenderer^>((ItemRenderer^)renderer);
if (item != nullptr)
item->SetState(1);
}
现在一切正常。这是一个常见的解决方案,还是有别的?