小编Squ*_*are的帖子

如何在c ++中使用模板对象的模板成员函数创建线程

我正在创建线程安全列表,我遇到调用线程构造函数的问题.我有一个模板类

template <typename T>
class mylist{...}
Run Code Online (Sandbox Code Playgroud)

存储具有T数据的节点并mylist获得如此定义的成员函数

template <typename FUNC>
void for_each(FUNC f){...}
Run Code Online (Sandbox Code Playgroud)

为列表中的每个T数据调用f().我也有功能

template<typename T> 
void show(T data) 
{cout<<data<<", ";}
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道如何制作线程并将此函数传递给它.我试过这样的(mylist是一个类名,multithreadlist是一个对象mylist<size_t>

std::thread t1(&mylist<size_t>::for_each<void(*)(size_t)>, &multithreadlist, show<size_t>);
Run Code Online (Sandbox Code Playgroud)

我得到C2893无法专门化函数模板'unknown-type std :: invoke(_Callable &&,_ Types && ...)'和C2672'std :: invoke':找不到匹配的重载函数

c++ syntax multithreading templates constructor

2
推荐指数
1
解决办法
619
查看次数

C++是内存泄漏吗?指向数组的指针在另一个函数中动态调整

快问.这会泄漏吗?为什么/为什么不呢?

int main()
{
    int array[] = {1,2,3};
    doStuff(array);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

何时doStuff会做这样的事情

void doStuff(int * arr)
{
    // ...
    arr = new int [50];
    // ...
}
Run Code Online (Sandbox Code Playgroud)

编辑@Scott Hunter我认为它不会泄漏,因为array指向堆栈上的内存并且我从未听说过堆栈中的内存泄漏,但另一方面我有点丢失了这个内存的任何链接.

EDIT2我的问题是我的想法是改变arrdoStuff地址将改变arraymain以及,但它不会.

c++ memory-leaks

0
推荐指数
2
解决办法
85
查看次数