Domanda

Ho un applicazione GUI scritta in C ++ / CLI, che ha un carico di opzioni configurabili. Ho alcune funzioni sovraccaricate che afferrano i valori dalla mia fonte di dati e vorrei collegare le mie opzioni a quei valori.

Quindi, ecco un paio di cani da riporto di dati:

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

speravo di passare del casella Checked getter / setter come segue:

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

... ma per qualche ragione ho un errore del compilatore strano che suggerisce la <=> valore non viene passata come mi aspetto:

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

In precedenza questo codice superato la casella di controllo e modificato i valori in sé, ma sono desiderosi di rompere la dipendenza nostra raccolta di dati ha attualmente su Windows Form.

Allora, cosa mi manca qui?

[Edit] Ho riempito le definizioni di funzioni come erano in origine dovevano evitare confusione -. Il mio tentativo di ridurre le informazioni irrelevent fallito

Sono abbastanza certo che la CheckBox getter / setter restituisce un bool .

È stato utile?

Soluzione

Ho pensato di chiarire i miei commenti dall'alto e renderlo una risposta "vera" ...

Quando si chiama controllato, quello che stai ricevendo indietro come un valore di ritorno è un bool che rappresenta lo stato attuale della casella di controllo. Si tratta di non , tuttavia, un riferimento al membro di dati effettivo che mantiene lo stato del CheckBox. In realtà, una classe adeguatamente incapsulato non dovrebbe dare accesso ad esso. Inoltre, poiché i rendimenti Controllato un bool per valore, che bool è un oggetto temporaneo che non esiste necessariamente dal momento GetCongigSingle viene chiamato.

Questo vi lascia con diverse opzioni. O passare il bool s per valore, e successivamente impostare lo stato del CheckBox, o passare il CheckBox in sé per riferimento e "check" dove si vuole.

Altri suggerimenti

I due overload del metodo GetConfigSingleFile che hai citato entrambi prendono due argomenti, mentre si passa 4 argomenti al metodo. Ci sono argomenti di default? Se sì, ti invitiamo a riprodurre le dichiarazioni di metodo originale?

Molto probabilmente, il sovraccarico 4 argomento di questo metodo si aspetta una String^% come il 2 ° argomento. Questo è ciò che il compilatore sta suggerendo comunque. Ma se possiamo avere uno sguardo ai dichiarazioni di metodo che potrebbe aiutare a diagnosticare il problema.

Questa non è una risposta alla mia domanda, ma vale la pena di essere a conoscenza di - a quanto pare c'è un capriccio passando proprietà per riferimento .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top