gpt4 book ai didi

c++ - 在 C++ 中将方法放入缓冲区

转载 作者:行者123 更新时间:2023-11-28 01:56:23 25 4
gpt4 key购买 nike

我创建了这个方法来将一些数据放入缓冲区:

template <typename T>
void locked_buffer<T>::put(const T & x, bool last) noexcept
{
using namespace std;
unique_lock<mutex> l{mut_};
not_full_.wait(l, [this] { return !do_full(); });
buf_[next_write_] = item{last,x};
next_write_ = next_position(next_write_);
l.unlock();
not_empty_.notify_one();
}

但是,尝试将包含在函数返回中的数据放入:

int size_b;
locked_buffer<long buf1{size_b}>;
buf1.put(image, true); //image is the return of the function

bool 变量 bool last 有问题,因为我有编译错误。

谢谢。

编辑:我得到的错误如下:

error: no matching function for call to 'locked_buffer<long int>::put(std::vector<std::vector<unsigned char>>&, bool)'

最佳答案

error: no matching function for call to locked_buffer<long int>::put(std::vector<std::vector<unsigned char>>&, bool)

告诉你你需要知道的一切:

  1. 你的 locked_buffer对象模板化为类型:long int
  2. 您的第一个st 参数的类型是:vector<vector<unsigned char>>

现在我们从您的函数定义中知道这两种类型必须相同:

template <typename T>
void locked_buffer<T>::put(const T & x, bool last) noexcept

编译器的错误是正确的。您需要使用匹配的 locked_buffer对象或创建一个新函数:

template <typename T, typename R>
void locked_buffer<T>::put(const R& x, bool last) noexcept

关于c++ - 在 C++ 中将方法放入缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41061776/

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