gpt4 book ai didi

c++将各种参数传递给父类构造函数(线程c++ 11)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:04 24 4
gpt4 key购买 nike

谁知道如何将参数从继承类传递到接受各种参数的基本类构造函数?我的意思是...“线程”类有一个带有不同数量参数的初始化构造函数,它表示如下:

template <class Fn, class... Args> explicit thread (Fn&& fn, Args&&... args);

所以...我想创建一个具有相同初始化构造函数的继承类,并且新类中的构造函数必须将所有参数传递给基本(线程)类,但不知道如何=)

例如(我想要的):

class my_thread : public std::thread {
private:
.....
public:
my_thread( WHAT TO WRITE HERE? ) : thread (AND HERE ) {};
.....
};

void my_func(int arg_1, char arg_2) {
.....
}

int main() {
my_thread mt(my_func, 20, -6);
mt.join();
}

有什么解决办法吗?

最佳答案

template <class Fn, class... Args,
class = typename std::enable_if<
!std::is_same<typename std::decay<Fn>::type,
my_thread>::value>::type>
explicit my_thread (Fn&& fn, Args&&... args)
: thread(std::forward<Fn>(fn), std::forward<Args>(args)...) { }

有关从标准库类型继承的常见注意事项适用。如果您传递一个 my_threadenable_if 会从重载解析中移除此构造函数,本质上是重复 LWG 2097 的解析。 .

关于c++将各种参数传递给父类构造函数(线程c++ 11),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25695210/

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