gpt4 book ai didi

c++ - 如何使用构造函数(带参数)创建模板类并将该类的方法传递给线程

转载 作者:行者123 更新时间:2023-11-30 02:14:33 26 4
gpt4 key购买 nike

我想创建一个封装 vector 的模板类。该类的构造函数接收一个 int 大小作为参数。在该类中,有一种方法可以将元素插入 vector 中。主要是我想将这个 push() 传递给一个线程

#include <iostream>
#include <thread>
#include <vector>
using namespace std;

template <class T> class Queue{
private:
int size;
vector<T> v;
public:
Queue(int size) {
this->size = size;
}

void push(T t) {
v.push_back(t);
}
};

int main()
{
Queue<int> * miaCoda = new Queue(4);
thread t1(&Queue::push, miaCoda, 2);
t1.join();
}

我在 main 的前两行中得到了所有这些错误

错误 C2514“队列”:类没有构造函数错误 C2955“队列”:使用类模板需要模板参数列表
错误 C2661 'std::thread::thread': 没有重载函数需要 3 个参数错误(事件)E0441 类模板“队列”的参数列表丢失
错误(事件)E0289 构造函数“std::thread::thread”的实例与参数列表不匹配

最佳答案

Queue<int> * miaCoda = new Queue(4);
thread t1(&Queue::push, miaCoda, 2);

Queue不是一个类。它是一个模板。什么是类,这里是Queue<int> .现在这是一个类,具有全部权利和特权。

因此,要获取指向类方法的指针,您必须指定需要获取其方法指针的类:

thread t1(&Queue<int>::push, miaCoda, 2);

关于c++ - 如何使用构造函数(带参数)创建模板类并将该类的方法传递给线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57665936/

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