0

WTL CString クラスを使用します。このクラスには、オーバーロードされた演算子が 1 つあります。

operator LPCTSTR() const
{
    return m_pchData;
}

だから私はこのようにそれを使用しました:

CString sText = _T("I like CString!");
TRACE("%s", sText);

そして私は得ました:

Output: I like CStrings!

しかし、独自の特定の変換メソッドと演算子をいくつか追加した後:

operator LPWSTR() const
{
    return ConvertStringToWide();
}

operator LPSTR() const
{
    return ConvertStringToAnsi();
}

そして今、私は代わりに取得します:

Output: I like CStrings!

これ:

Output: &%?....

いくつかのテストを行った後、演算子 LPCTSTR() を呼び出して m_pchData を返す代わりに、CString がクラスの this ポインターを返すことがわかりました! したがって、m_pchData ではなく、常にクラスへのポインターを取得します。

私の質問は次のとおりです。CStringクラスに、デフォルトで演算子LPCTSTR()を使用し、thisポインターを返さないようにするにはどうすればよいですか?

4

1 に答える 1