如何我通过CLI引用传递复选框值?
-
21-08-2019 - |
题
我用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
的getter / setter通过如下所示:
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窗体上我们的数据收集目前有依赖性。
那我在这里失踪?
[编辑] 我已经填写了函数的定义,因为他们原本是为了避免混淆 - 我试图减少失败无关紧要的信息
我相当肯定的是的复选框的getter / setter返回一个布尔。
解决方案
想我会从上面澄清我的意见,并使它成为一个“真正”的答案......
当你调用经过,你会找回作为返回值是表示CheckBox的当前状态的布尔。这是不的,但是,为了保持该CheckBox的状态的实际数据成员的引用。事实上,适当的封装类不应该放弃访问。此外,由于经过由返回值的布尔,即布尔是临时对象并不一定由GetCongigSingle被调用的时候存在。
这让你有几种选择。无论是按值传递的 BOOL 的S,后来设置CheckBox的状态,或者通过引用传递复选框本身和“检查”它不管你想要的。
其他提示
在两个过载你提到两个带有两个参数而要传递4个参数的方法,所述方法GetConfigSingleFile
的。是否有任何默认参数?如果是的话,可以请你重现原始方法的声明?
最可能的是,该方法的4参数超载期待一个String^%
作为第二参数。这是编译器反正建议。但是,如果我们可以看看在方法声明,可以帮助诊断问题。
这是不是一个回答我的问题,但值得意识到的 - 显然还有的通过引用通过性的异常行为。