我用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^%作为第二参数。这是编译器反正建议。但是,如果我们可以看看在方法声明,可以帮助诊断问题。

这是不是一个回答我的问题,但值得意识到的 - 显然还有的通过引用通过性的异常行为。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top