gpt4 book ai didi

c++ - 在单元测试中初始化 unique_ptr

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

我有以下代码:

class foo {

public:
foo();
void setMean(std::shared_ptr<std::valarray<double>> input);
private:

std::shared_ptr<std::valarray<double>> mean;

}

.cpp 文件:

foo::foo() : mean(nullptr) {
}

void foo::setMean(std::shared_ptr<std::valarray<double>> input){
mean = input;
}

现在,在单元测试文件中:

std::shared_ptr<std::valarray<double>> input = std::make_shared<std::valarray<double>>(std::initializer_list<double>{0.0, 0.0});

std::unique_ptr<foo> meanObj;

meanObj->setMean(input);

当控件进入 setMean 函数时代码中断。

unique_ptr 的初始化有问题吗?

最佳答案

使用原始指针重写的示例的最后两行将是

foo* meanObj = nullptr;
meanObj->setMean(input);

你看到问题了吗?您正在取消引用 nullptr。您需要先创建一个 foo 对象,由 unique_ptr 管理

auto meanObj(std::make_unique<foo>());
// or std::unique_ptr<foo> meanObj(new foo);
meanObj->setMean(input);

关于c++ - 在单元测试中初始化 unique_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37280194/

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