Question

J'ai une application GUI écrite en C ++ / CLI qui a une charge d'options configurables. J'ai quelques fonctions surchargées qui saisissent les valeurs de ma source de données et je voudrais relier mes options à ces valeurs.

Alors, voici quelques chiens d'arrêt de données:

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

J'espérais passer Checked getter / setter de la case à cocher comme suit:

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

... mais pour une raison quelconque, je reçois une erreur de compilation étrange qui suggère que la valeur n'est pas <=> être passé comme je pense:

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

Auparavant, ce code a passé la case à cocher et modifié les valeurs lui-même, mais je suis désireux de briser la dépendance de notre collecte de données dispose actuellement sur les formulaires Windows.

Alors qu'est-ce que je manque ici?

[Modifier] J'ai rempli les définitions de fonction comme ils étaient à l'origine pour éviter toute confusion -. Ma tentative de réduire les informations irrelevent échoué

Je suis assez certain que la CheckBox getter / setter retourne bool.

Était-ce utile?

La solution

Figured je préciser mes commentaires ci-dessus et de faire une réponse « vrai » ...

Lorsque vous appelez INSPECTÉ ce que vous obtenez de retour en tant que valeur de retour est un bool qui représente l'état actuel de la case correspondante. Il est pas , cependant, une référence à l'élément de données réelles qui tient l'état de la case correspondante. En fait, une classe bien encapsulé ne doit pas donner accès. De plus, puisque les rendements checked bool en valeur, que bool est un objet temporaire qui n'existe pas nécessairement le temps GetCongigSingle est appelé.

Cela vous laisse avec plusieurs options. Soit passer le bool s par valeur, et définir plus tard l'état du CheckBox, ou passer le CheckBox lui-même par référence et « vérifier » où vous voulez.

Autres conseils

Les deux surcharge de la méthode que vous avez GetConfigSingleFile mentionné deux prendre les deux arguments que vous passez 4 arguments à la méthode. Y a-t-il des arguments par défaut? Si oui, pouvez-vous s'il vous plaît reproduire les déclarations de méthode originale?

Très probablement, la surcharge de 4 argument de cette méthode attend un comme 2ème String^% argument. C'est ce que le compilateur suggère de toute façon. Mais si nous pouvons avoir un regard sur les déclarations de méthode qui pourrait aider à diagnostiquer le problème.

Ce n'est pas une réponse à ma question, mais la peine d'être au courant - apparemment il y a

scroll top