문제

구성 가능한 옵션이 많이 포함된 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 양식에 대한 종속성을 깨고 싶습니다.

그렇다면 내가 여기서 무엇을 놓치고 있는 걸까요?

[편집하다] 혼란을 피하기 위해 원래대로 함수 정의를 작성했습니다. 관련 없는 정보를 줄이려는 시도는 실패했습니다.

나는 그것을 확신한다. CheckBox getter/setter는 bool을 반환합니다..

도움이 되었습니까?

해결책

위에서 내 의견을 명확히하고 "진짜"답변으로 만들겠다고 생각했습니다.

Checked를 호출하면 반환 값으로 반환되는 것은 CheckBox의 현재 상태를 나타내는 bool입니다.그것은 ~ 아니다, 그러나 CheckBox의 상태를 보유하는 실제 데이터 멤버에 대한 참조입니다.실제로 적절하게 캡슐화된 클래스는 이에 대한 액세스 권한을 부여해서는 안 됩니다.또한 Checked는 값으로 부울을 반환하므로 해당 부울은 GetCongigSingle이 호출될 때 반드시 존재하지 않는 임시 개체입니다.

이렇게 하면 몇 가지 옵션이 제공됩니다.통과하거나 부울s를 값으로 지정하고 나중에 CheckBox의 상태를 설정하거나 CheckBox 자체를 참조로 전달하고 원하는 위치에서 "확인"합니다.

다른 팁

메소드의 두 가지 오버로드 GetConfigSingleFile 당신이 언급한 것은 둘 다 두 개의 인수를 취하는 반면 메소드에 4개의 인수를 전달하는 것입니다.기본 인수가 있습니까?그렇다면 원래 메소드 선언을 재현해 주시겠습니까?

아마도 이 메서드의 인수 4개 오버로드는 String^% 두 번째 인수로.어쨌든 이것은 컴파일러가 제안하는 것입니다.하지만 문제를 진단하는 데 도움이 될 수 있는 메서드 선언을 살펴볼 수 있다면 말이죠.

이것은 내 질문에 대한 답변은 아니지만 알아 둘 가치가 있습니다. 참조로 속성을 전달하는 이상한 점.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top