Pregunta

Tengo una aplicación GUI escrito en C ++ / CLI que tiene una carga de opciones configurables. Tengo algunas funciones sobrecargadas, que captan los valores de mi fuente de datos y me gustaría conectar mis opciones para esos valores.

Así que aquí hay un par de perros perdigueros de datos:

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

Me esperaba para pasar de la casilla de verificación Checked captador / definidor de la siguiente manera:

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

... pero por alguna razón me sale un error de compilación extraña que sugiere la <=> valor no se pasa como yo esperaría:

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

Anteriormente este código aprobó la casilla de verificación y modifica los valores en sí, pero estoy dispuesto a romper la dependencia de nuestra colección de datos tiene actualmente en formas de las ventanas.

Entonces, ¿qué me estoy perdiendo aquí?

[Editar] He llenado la definición de funciones, ya que originalmente eran para evitar la confusión -. Mi intento de reducir la información irrelevante fallado

Estoy bastante seguro de que la CheckBox captador / definidor devuelve un bool .

¿Fue útil?

Solución

pensé que podría aclarar mis comentarios desde arriba y que sea una respuesta "real" ...

Cuando se llama a cuadros, lo que está recibiendo de vuelta como un valor de retorno es un bool que representa el estado actual de la casilla de verificación. Es no , sin embargo, una referencia al miembro de datos real que mantiene el estado de la casilla de verificación. De hecho, una clase adecuada encapsulado no debe dar acceso a ella. Además, puesto que Chequeado devuelve un bool por valor, que bool es un objeto temporal que no necesariamente existe en el momento en GetCongigSingle se llama.

Esto le deja con varias opciones. O bien pasar el bool s por valor, y luego establecer el estado de la casilla de verificación, o pasar la casilla de verificación en sí por referencia y "comprobar" siempre que lo desee.

Otros consejos

Los dos sobrecarga del método GetConfigSingleFile que usted ha mencionado ambos toman dos argumentos mientras que está de paso 4 argumentos para el método. ¿Hay argumentos por defecto? En caso afirmativo, ¿puedes reproducir las declaraciones de método original?

Lo más probable, la sobrecarga de 4 argumento de este método está esperando un String^% como el segundo argumento. Esto es lo que el compilador está sugiriendo modos. Pero si podemos echar un vistazo a las declaraciones de métodos que podrían ayudar a diagnosticar el problema.

Esto no es una respuesta a mi pregunta, pero vale la pena estar al tanto de - al parecer hay una peculiaridad en pasar propiedades por referencia .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top