gpt4 book ai didi

参数数量未知的 C++ 模板函数

转载 作者:太空狗 更新时间:2023-10-29 23:27:06 24 4
gpt4 key购买 nike

这可能是一个无用的问题,但它在我脑海中萦绕了几个小时。

我想编写一个接受一些 (POD) 参数的函数,将它们转换为字符串并返回连接。例如

template<typename A, typename B>
string ToString(A a, B b)
{
stringstream ss;
ss << a << b;
return ss.str();
}

很简单吧?但是当我想用未知个参数编写相同的函数时,它变得非常困难(当然对我而言)。

有可能吗?有什么解决办法吗?

最佳答案

在 C++03 中,没有。您所能做的就是创建具有不同数量参数的重载:

template<typename A, typename B>
string ToString(A a, B b)
{
stringstream ss;
ss << a << b;
return ss.str();
}

template<typename A, typename B, typename C>
string ToString(A a, B b, C c)
{
stringstream ss;
ss << a << b << c;
return ss.str();
}

这可以通过 Boost.Preprocessor 库(在某种程度上)自动化。

在 C++0x 中,您可以像这样使用可变参数模板:

#include <iostream>

void f()
{
}

template <class T, class ... Ts>
void f(const T& a, const Ts&... args)
{
std::cout << a;
f(args...);
}

关于参数数量未知的 C++ 模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3307939/

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