gpt4 book ai didi

c++ - 直接在 foreach 循环中转换

转载 作者:搜寻专家 更新时间:2023-10-31 00:36:00 25 4
gpt4 key购买 nike

在某些情况下,我有一个指向 ClassA 的指针的 std::vector。另一个类 ClassB 继承自 ClassA。在某些时候,我知道此 vector 包含指向ClassB 实例的指针。我使用 foreach 循环 遍历 vector ,之后我将对象cast 到 ClassB。

目前这看起来类似于:

Class ClassA
{
}

Class ClassB : public ClassA
{
public:
void DoSomething();
}

std::vector<ClassA*> vecA;

void iterate()
{
for(ClassA* obj : vecA)
{
((ClassB*)obj)->DoSomething();
}
}

我想知道我是否可以直接在foreach循环中转换对象。这会更短,并且不需要我每次想使用它时都转换对象。我正在寻找看起来像这样的东西:

void iterate()
{
for((ClassB*)ClassA* obj : vecA)
{
obj->DoSomething();
}
}

这可能吗?如果不是,如果我想多次使用类型转换对象,那么“保存”类型转换的简单方法是什么?

提前致谢。

最佳答案

void iterate() {
for(ClassA* obj_ : vecA) {
Assert(dynamic_cast<ClassB*>(obj_)); // debug build sanity check
auto* obj = static_cast<ClassB*>(obj_);
obj->DoSomething();
}
}

关于c++ - 直接在 foreach 循环中转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22714234/

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