1.所以我有:
Class A;
Class B : public A;
Class C : public B;
2.还有一个 B 类型的指针 vector :
vector<B*> vec;
3.然后:
C* ptr = new C();
vec.push_back(ptr);
那么问题来了,这样用std::find靠谱吗?
std::find(vec.begin(), vec.end(), prt);
此外,使用 this-> 指针进行搜索可以吗?
std::find(vec.begin(), vec.end(), this); //inside of a type C object
提前致谢。
最佳答案
是的,这是安全的,因为类型层次结构中指向对象的指针之间存在明确定义的比较 (==
)。即使指针的实际值在转换为基类类型后可能有所不同(通常是多重继承的情况),运行时也需要对此进行调整,以便这些指针之间的比较仍会产生正确的结果。
关于c++ - std::find 用于继承对象 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794177/