gpt4 book ai didi

c++ - 如何在 C++ 函数模板中指定默认的非模板参数初始值设定项?

转载 作者:行者123 更新时间:2023-11-28 03:17:44 26 4
gpt4 key购买 nike

编辑:有关详细信息,请参阅我自己对此问题的回答。结果证明是 Eclipse Juno 错误,而不是 C++ 问题。尽管如此,这个问题仍然涵盖了对其他 C++ 模板用户有用的主题。

如果我想创建一个带有"template"类型参数和其他“非模板”类型参数的模板类,我可以如何指定它?

示例:一个实现或 itoa() 但具有多种类型、填充并返回一个字符串...

编辑:修复了定义中的变量名称。

   template <typename T>   std::string    Num2Str( T x, char pad = ' ', int width = 0 );
template <typename T> std::string Num2Str( T x, char pad, int width )
{
static std::string string;
std::stringstream ss;
ss << std::setfill(pad) << std::setw(width) << x;
string = ss.str();
return string;
}

编辑:这应该适用于编译器/平台、g++、VC++。

最佳答案

我认为您混淆了模板参数和函数参数。为什么不只是这个:

#include <sstream>
#include <iomanip>

template <typename T>
std::string Num2Str( T x, char pad = ' ', int width = 0 )
{
static std::string string;
std::stringstream ss;
ss << std::setfill(pad) << std::setw(width) << x;
string = ss.str();
return string;
}

void Test()
{
auto s1 = Num2Str( 1.0 );
auto s2 = Num2Str( 2, '-' );
auto s3 = Num2Str( 3.0, ' ', 3 );
}

关于c++ - 如何在 C++ 函数模板中指定默认的非模板参数初始值设定项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16327764/

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