gpt4 book ai didi

c++ - 在循环中将相同的 unique_ptr 移动到函数中

转载 作者:行者123 更新时间:2023-11-30 02:17:45 28 4
gpt4 key购买 nike

重新设计以下容易出错的代码的最佳方法是什么:

void ClassA::methodA(std::unique_ptr<ClassB::ISomeInterface> obj){
for (int i = 0; i < 10; i++) {
methodB(std::move(obj)); // the obj pointer is undefined on second iteration here after the move
}
}

void ClassA::methodB(std::unique_ptr<ClassB::ISomeInterface> obj){
..........
}

目标是多次传递相同的 unique_ptr 函数。

最佳答案

如果您不想转移所有权,只需传递原始指针或引用即可。如果函数要存储指针,shared_ptr 会更合适:

void ClassA::methodA(std::unique_ptr<ClassB::ISomeInterface> obj){
for (int i = 0; i < 10; i++) {
methodB(*obj);
}
}

void ClassA::methodB(ClassB::ISomeInterface& obj){
..........
}

关于c++ - 在循环中将相同的 unique_ptr 移动到函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53242433/

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