gpt4 book ai didi

c++ - 新的 T(x, y, z) 作为函数

转载 作者:行者123 更新时间:2023-11-30 00:53:04 25 4
gpt4 key购买 nike

我有一些代码需要一个函数指针,但我需要用一些东西来调用它执行“新 T(x, y, z)”。

我可以按照以下方式编写一个函数:

template<T, X, Y, Z>
T* Construct(X x, Y y, Z z) {
return new T(x, y, z);
}

但我想知道 STL 中是否已经存在这样的事情,因为我需要对可变数量的参数执行此操作,这需要重复上述操作,比如 10 次,每个参数数量一次,我想以避免在头文件中添加太多样板文件。

最佳答案

在 C++11 中,您可以使用可变参数模板:

template<typename T, typename... Args>
T* Construct(Args&&... args)
{
return new T(std::forward<Args>(args)...);
}

另外,考虑一下你是否真的想要返回一个原始指针而不是一个智能指针(例如,一个unique_ptr)。除非你正在做低级的事情,否则不鼓励使用拥有原始指针在现代 C++ 中。

关于c++ - 新的 T(x, y, z) 作为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17507102/

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