gpt4 book ai didi

c++ - 错误 "Attempting to reference a deleted function"- 传回 unique_ptr 的值时

转载 作者:行者123 更新时间:2023-11-27 22:58:26 25 4
gpt4 key购买 nike

测试.h

#include <memory>
#include <string>
using namespace std;

class A
{
public:
A GetTitle();
private:
unique_ptr<A> title;
};

测试.cpp

#include <memory>
#include "Test.h"

A A::GetTitle()
{
return *this->title.get();
} // Error here

int main()
{
}

我收到以下错误:

C2280: 'std::unique_ptr>::unique_ptr(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)' : attempting to reference a deleted function

我在这里做错了什么?是否取决于 this->keyServer 的所有权?我如何只传回值,这样我就完全不允许函数的用户在不使用 setter 的情况下修改类内的值?

最佳答案

A 不可复制,因为存在 unique_ptr 数据成员。 GetTitle() 成员函数尝试复制 A,因为它按值返回 A,导致(误导性)错误.

如果您希望能够复制A,您需要提供复制构造函数定义。


总的来说,你的例子很奇怪。如果 A 是唯一资源,您是否应该在该成员函数中复制它?如果 A::title 实际上包含一个指向从 A 派生的类的指针怎么办?那么复制操作将不会按预期进行。

关于c++ - 错误 "Attempting to reference a deleted function"- 传回 unique_ptr 的值时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30201922/

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