おはようございます。
技術的には、文字配列の単なるラッパーであるクラスがあります。文字列の構築時にメモリを割り当て、破棄時に解放します。それは問題ではありません。
任意の vararg 関数 (sprintf など) に渡したいときはいつでも、問題が発生しますnon-trivial type
。
少しGoogleで検索した後、「自明な型」は、でコピーできる任意の型でありmemcpy
、コンストラクターなどを持たないことがわかりました。
今私の質問:変数を書き込むだけで、コンパイラに内部文字列を渡す方法はありますか?
そして例:
Wrapper Var("World");
sprintf(Buf, "Hello %s", Var);
この呼び出しの後、「Hello World」になるはずです。
内部ストリームにアクセスする関数を作成 (および呼び出し) すると機能します (のようc_str()
に、しかしそれはクラスの目的ではありません。通常の char 文字列のように渡すことができるクリーンな API であると想定されています。メモリ管理機能だけで。
私はもう試した:
operator char *() {
return InternalString;
}
によって呼び出されていないようですsprintf
。
ご清聴ありがとうございました。