2012-02-19 2 views
1

textbox1의 C++/CLI 폼과 다른 헤더 파일에 Dummy이라는 클래스가있는 경우 Dummy 클래스에있는 함수로 textbox1.Text의 값을 "직접"변경하려는 경우 어떻게해야합니까? 다음 더미 클래스에 텍스트 상자 개체로 변수를 전달 대해, 더미 변경을하고 텍스트 상자 개체다른 클래스의 textBox 값을 변경 하시겠습니까?

public System.Windows.Forms.TextBox ChangeText(System.Windows.Forms.TextBox MyTextBox) 
{ 
    MyTextBox.Text = "HELLO"; 
    return MyTextBox; 
} 

이에게 반환하는 방법

+0

'myForm-> textbox1-> Text = whatever;'를 의미합니까? –

+0

@BenVoigt : 예,하지만 이미 Dummy.h를 myForm.h에 포함 시켰습니다. 그러나 Dummy.h에 myForm.h를 포함시킬 수 없습니다! – Aan

+1

이 행을'Dummy.h'와'myform.h'를 모두 포함하는'Dummy.cpp'에 넣으십시오. –

답변

2

C++는 단일 패스 컴파일을 수행합니다. 이것은 컴파일러가 이미 그것을 보았을 때까지는 사용할 수 없다는 것을 의미합니다.

서로 상호 작용하는 두 개의 클래스가있는 경우 문제가 될 수 있습니다. 운좋게도 C++은 컴파일러에게 "나중에 클래스 또는 함수에 대한 서명이 있음을 알려주는"forward 선언을 허용합니다. 일반적

이 순서대로 다음과 컴파일러를 제공 클래스

  • 순방향 선언

    ref class Dummy; 
    ref class MyForm; 
    
  • 클래스 정의

    ref class Dummy { ... }; 
    ref class MyForm { ... }; 
    
  • 반원 함수 정의

    ,
    void Dummy::DoIt() 
    { 
        myForm->textBox1->Text = whatever; 
    } 
    

종종 필요한 유일한 것은이 .cpp 파일에 함수 정의를 넣어 있는지 확인하는 것입니다 모든 클래스의 .cpp 파일 #include의 헤더 파일이. 문제가 있다면이 줄을 Dummy.cpp에 넣어야하며 이는 Dummy.hmyform.h을 모두 포함해야합니다.

0

어쩌면 같은 논리를 사용하여 C에서 # 클래스의 방법이다 .

관련 문제