既存の関数があり、パラメーターを追加してデフォルト値を設定し、それを使用する他のモジュールに影響を与えないようにしたいと考えています。
BOOL myFunc(int A, CString& strTest);
NULL または 0 に初期化すると、エラー メッセージが表示されます。func 宣言で strTest を初期化するにはどうすればよいですか?
既存の関数があり、パラメーターを追加してデフォルト値を設定し、それを使用する他のモジュールに影響を与えないようにしたいと考えています。
BOOL myFunc(int A, CString& strTest);
NULL または 0 に初期化すると、エラー メッセージが表示されます。func 宣言で strTest を初期化するにはどうすればよいですか?
おそらく空の文字列に初期化します。
CString dummy = "";
BOOL myFunc(int A, CString &strTest=dummy);
デフォルト値を許可している場合は、おそらく文字列への参照にしたいと思うでしょうconst
:
BOOL myFunc(int A, CString const &strTest = dummy);
ただし、代わりにオーバーロードの使用を検討することをお勧めします。既存の関数をそのままにして (追加のパラメーターなし)、追加のパラメーターを受け取る 2 番目の関数 (最初の関数に転送される可能性があります) を記述します。
BOOL myFunc(int A);
BOOL myFUNC(int A, CString const &strTest);
この方法で試すことができます
class A{
public:
static CString defArg;
bool myFunc(int A, CString& strTest=defArg);
};
CString A::defArg = "defArg";
bool myFunc(int A, CString& strTest){
//what you need to do
}