gpt4 book ai didi

c++ - 非复制构造函数干扰静态方法的返回

转载 作者:行者123 更新时间:2023-11-28 01:36:55 29 4
gpt4 key购买 nike

我怎样才能在 C++ 中拥有一个类中的静态方法和一个(非复制)构造函数 (const T &t),以便我可以从静态方法?

class chunk_t
{
public:
explicit chunk_t();

~chunk_t();

static chunk_t create_from(const roaring_bitmap_t &data, bool filled = false);

private:
bool filled = false;
roaring_bitmap_t *data = nullptr;

explicit chunk_t(const chunk_t &other);
};

chunk_t::chunk_t()
{
this->data = roaring_bitmap_create_with_capacity(C);
}

chunk_t::chunk_t(const chunk_t &other)
{
_ASSERT(other.data != nullptr);

this->data = roaring_bitmap_copy(other.data);
this->filled = other.filled;
}

chunk_t chunk_t::create_from(const roaring_bitmap_t &data, bool filled)
{
chunk_t c;
c.data = roaring_bitmap_copy(&data);
c.filled = filled;
return c; // ERROR: class `chunk_t` has no suitable copy constructor
}

chunk_t::~chunk_t()
{
if(this->data != nullptr)
{
roaring_bitmap_free(this->data);
this->data = nullptr;
}
}

最佳答案

在c++11中,你不需要复制构造函数来返回一个值;您可以提供一个移动构造函数,它可以更好地展示您的意图,因为您将继续在尝试复制时遇到编译错误;但您可以在需要时移动您的对象。

关于c++ - 非复制构造函数干扰静态方法的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48904390/

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