0

既存の関数があり、パラメーターを追加してデフォルト値を設定し、それを使用する他のモジュールに影響を与えないようにしたいと考えています。

BOOL myFunc(int A, CString& strTest);

NULL または 0 に初期化すると、エラー メッセージが表示されます。func 宣言で strTest を初期化するにはどうすればよいですか?

4

2 に答える 2

2

おそらく空の文字列に初期化します。

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);
于 2013-02-22T06:37:44.477 に答える
1

この方法で試すことができます

ああ

class A{
    public:
      static CString defArg;
      bool myFunc(int A, CString& strTest=defArg);
 };

A.cpp

CString A::defArg = "defArg";

bool myFunc(int A, CString& strTest){
 //what you need to do
}
于 2013-02-22T07:14:48.247 に答える