私は MFC クラス CString をサブクラス化しています (クラスに問題はありませんが、私を信じてください。特定の実装のためにこれを行う必要があります)。いくつかの動作をうまくカスタマイズしましたが、CString がフォーマット文字列に渡されるときに発生するように見える暗黙の (LPCTSTR) 演算子を失ったことに気付きました。この魔法は、CString::Format であれ、prinf/sprintf であれ、発生します。例えば:
CString Str = _T("Really cool string");
TCHAR szBuffer[32];
_stprintf(szBuffer, _T("Here it is: %s"), Str);
CString::FormatString は可変引数リストを _vswprintf と _swprintf に渡すだけなので、この魔法が標準の CString でどのように機能するかはわかりません。しかし、それが何をするにしても、私の派生クラスには欠けています。
演算子 (LPCTSTR) は期待どおりに継承され、明示的に呼び出されたときに機能します。
何か案は?