C++ C++;关于MacOS吊舱类型检查
我有以下C++函数:C++ C++;关于MacOS吊舱类型检查,c++,macos,variadic-functions,C++,Macos,Variadic Functions,我有以下C++函数: using namespace std; template<typename ... Args> string string_format( const std::string& format, Args ... args ) { size_t size = snprintf( nullptr, 0, format.c_str(), args ...) + 1; std::unique_ptr<char[]> buf(
using namespace std;
template<typename ... Args>
string string_format( const std::string& format, Args ... args )
{
size_t size = snprintf( nullptr, 0, format.c_str(), args ...) + 1;
std::unique_ptr<char[]> buf( new char[ size ] );
snprintf( buf.get(), size, format.c_str(), args ... );
return string( buf.get(), buf.get() + size - 1 );
}
%s
格式说明符用于CString。您正在传递一个std::string
。如果您改为这样做,它将起作用:string\u格式(“%s%ld%ld%ld”,label.c\u str(),id,reference,value)代码>这是一个旧的gcc编译器。尝试使用一个新版本(VS也是一个新版本?)你能给我们一个导致错误的完整工作示例吗,在我看来,指出的错误不是你给出的代码中的int…是的,你用@MatthieuBrucher将string\u格式
称为什么?@MatthieuBrucher它根本不是gcc;它是苹果公司定制的叮当声。你没有发布显示你如何使用模板的代码
class Node
{
public:
int id;
int reference;
int value;
std::string label;
std::string describe()
{
return string_format("%s %ld %ld %ld", label, id, reference, value);
}
}