0

構成可能なオプションがたくさんあるC++/CLIで記述されたGUIアプリがあります。データソースから値を取得するオーバーロードされた関数がいくつかあり、オプションをそれらの値に接続したいと思います。

したがって、ここにいくつかのデータリトリーバーがあります。

bool GetConfigSingle(long paramToGet, String^% str, char* debug, long debugLength);
bool GetConfigSingle(long paramToGet, bool^% v_value, char* debug, long debugLength);

私は次のようにチェックボックスのCheckedゲッター/セッターを渡すことを望んでいました:

result = m_dataSource->GetConfigSingle(CONFIG_OPTION1, this->myOption->Checked, debug, debugLen);

...しかし、何らかの理由で、Checked期待どおりに値が渡されていないことを示唆する奇妙なコンパイラエラーが発生します。

1>.\DataInterface.cpp(825) : error C2664: 'bool DataInterface::GetConfigSingle(long,System::String ^%, char*, long)' : cannot convert parameter 2 from 'bool' to 'System::String ^%'

以前、このコードはチェックボックスを渡し、値自体を変更しましたが、データコレクションが現在Windowsフォームに依存していることを解消したいと考えています。

だから私はここで何が欠けていますか?

[編集]混乱を避けるために元々関数定義を入力しましたが、無関係な情報を減らす試みは失敗しました。

CheckBoxのgetter/setterがboolを返すことはかなり確信しています。

4

3 に答える 3

1

あなたが言及したメソッドの2つのオーバーロードは、GetConfigSingleFile両方とも2つの引数を取りますが、メソッドに4つの引数を渡します。デフォルトの引数はありますか?はいの場合、元のメソッド宣言を再現していただけますか?

おそらく、このメソッドの4つの引数のオーバーロードはString^%、2番目の引数としてaを予期しています。これはとにかくコンパイラが提案していることです。しかし、問題の診断に役立つ可能性のあるメソッド宣言を見ることができれば。

于 2009-07-03T10:03:30.050 に答える
1

上からのコメントを明確にして、それを「本当の」答えにするだろうと考えました...

Checkedを呼び出すと、戻り値として返されるのは、CheckBoxの現在の状態を表すブール値です。ただし、CheckBoxの状態を保持する実際のデータメンバーへの参照ではありません。実際、適切にカプセル化されたクラスは、そのクラスへのアクセスを許可するべきではありません。さらに、Checkedはboolを値で返すため、そのboolは一時オブジェクトであり、GetCongigSingleが呼び出されるまでに必ずしも存在するとは限りません。

これにより、いくつかのオプションが残ります。boolを値で渡し、後でCheckBoxの状態を設定するか、CheckBox自体を参照で渡し、必要な場所で「チェック」します。

于 2009-07-03T11:33:48.740 に答える
0

これは私の質問に対する答えではありませんが、知っておく価値があります-どうやら、参照によってプロパティを渡すことには癖があります。

于 2009-07-03T11:01:24.323 に答える