早上好。
我有一个类,从技术上讲,它只是一个关于字符数组的包装器。它在构建时为字符串分配内存,并在销毁时释放它。那不是问题。
问题出现了,每当我想将它传递给任何 vararg 函数(例如 sprintf)时,我的编译器都会向我抛出一个错误,指出它无法复制non-trivial type
.
经过一点谷歌搜索,它告诉我,“普通类型”是任何类型,可以用 复制memcpy
,没有任何构造函数等。
现在我的问题是:有没有办法让编译器只写变量来传递内部字符字符串?
和例子:
Wrapper Var("World");
sprintf(Buf, "Hello %s", Var);
在这个调用之后,它应该是“Hello World”。
如果我编写(并调用)任何访问内部流的函数(c_str()
如仅具有内存管理功能。
我试过了:
operator char *() {
return InternalString;
}
但它似乎没有被sprintf
.
非常感谢您的关注。