gpt4 book ai didi

c++ - 使用 *void 作为 static_cast 的缓冲区

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:18 25 4
gpt4 key购买 nike

所以我这样做:

class A;

class B : public A;

class C : public B;

vector<A*> *vecA;

vector<C*> *vecC;

我想将 vectC 转换为 vecA。

vector<A*> *_newA = static_cast< vector<A*>* >(vecC); //gives an error

所以我使用 void 指针作为缓冲区和强制转换:

void *buffer = vecC;

vector<A*> *_newA = static_cast< vector<A*>* >(buffer); //works

这有效吗?还有其他方法吗?

最佳答案

你应该只有一个 std::vector<A*>然后当你想放一个 BC在里面,你可以这样做:

 std::vector<A*> vec;
vec.push_back(b);

这将比您目前正在做的任何事情都要好得多。

此外,您应该使用 std::unique_ptrstd::shared_ptr ,取决于指针的所有权语义。拥有原始指针是禁忌!!

关于c++ - 使用 *void 作为 static_cast 的缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11831431/

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