Frage

Ich habe eine GUI-Anwendung in C ++ geschrieben / CLI, die eine Last von konfigurierbaren Optionen. Ich habe einige überladene Funktionen, die Werte aus meiner Datenquelle greifen und ich möchte meine Optionen auf diese Werte verbinden.

Also hier ein paar Daten Retrievern:

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

Ich hatte gehofft, in der Checked Getter / Setter der Checkbox passieren wie folgt:

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

... aber aus irgendeinem Grund bekomme ich eine ungerade Compiler-Fehler, die der Checked Wert legt nahe, nicht übergeben wird, wie ich erwarten würde:

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

Bisher bestand dieser Code das Kontrollkästchen und modifizierte, um die Werte selbst, aber ich bin daran interessiert, die Abhängigkeit unserer Datensammlung zur Zeit auf Windows Forms hat zu brechen.

Also, was ich hier fehlt?

[Bearbeiten] Ich habe die Funktionsdefinitionen ausgefüllt, wie sie ursprünglich um Verwirrung zu vermeiden waren -. Mein Versuch, die irrelevent Informationen versäumt zu verringern

Ich bin ziemlich sicher, dass die CheckBox Getter / Setter gibt einen bool .

War es hilfreich?

Lösung

Dachte, ich meine Kommentare klären würde von oben und machen es zu einem „echten“ Antwort ...

Wenn Sie Checked nennen, was Sie als Rückgabewert immer wieder ist ein Bool, die den aktuellen Zustand des CheckBox darstellt. Es ist nicht , jedoch ein Hinweis auf das tatsächliche Datenelement, das das Kontrollkästchen des Staat hält. In der Tat soll eine ordnungsgemäß gekapselt Klasse keinen Zugriff darauf geben. Da darüber hinaus ein Bool von Wert Checked zurückgibt, dass Bool ist ein temporäres Objekt, das nicht notwendigerweise durch die Zeit existieren GetCongigSingle genannt wird.

Dies lässt Sie mit mehreren Optionen. Entweder übergeben Sie die Bool s nach Wert, und später setzen die CheckBox des Staates, oder übergeben Sie die CheckBox selbst durch Bezugnahme und „check“ es, wo immer Sie wollen.

Andere Tipps

Die beiden Überlastung des Verfahrens GetConfigSingleFile, dass Sie beide haben zwei Argumente erwähnt haben, während Sie 4 Argumente an die Methode übergeben. Gibt es Standardargumente? Wenn ja, können Sie die ursprüngliche Methode Erklärungen reproduzieren bitte?

Wahrscheinlich das 4 Argument Überlastung dieser Methode erwartet ein String^% als 2. Argument. Dies ist, was der Compiler ohnehin vorschlägt. Aber wenn wir einen Blick auf die Methodendeklarationen kann die Diagnose des Problems helfen könnte.

Das ist keine Antwort auf meine Frage, aber es lohnt sich dessen bewusst zu - offenbar gibt es a quirk Eigenschaften durch Bezugnahme in geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top