: 안녕하세요..
:
: 질문내용은 같은 프로젝트의 폼이 form1,과 form2가 있는데..form1의 헤더파일의 클래스에서 선언된 객체를 form2에서 사용하고 싶습니다.
: 물론 form1 의 헤더파일을 form2에서 인클루드 시키면 다시 객체가 초기화가 되어 이전에 form1에서 사용했던 계산값들이 모두 없어집니다.
:
: 결국 제가 질문하고자 하는 내용은 하나의 동일한 객체를 form1, form2에서 전역객체처럼 사용하고자 합니다..그래서 form1에서 계산된 결과를 form2에서 다시 또다른 계산을 해서 form1에서 출력하고자 하는 방법이 어떻게 하는지 모르는게 제 궁금함입니다.
:
: 그럼 미리 감사드리며 ,, 좋은 하루 되세요... ^^;
:
: ---------------------------------------------------
:
임펠리테리입니다.
빌더는 보기좋은 RAD 툴이기 이전에 C++ 컴파일러임을 상기하세요. 모든 문법은
C++에서 시작하고, RAD를 구현하기 위해 약간 확장되어 있을
뿐입니다.
먼저.. 질문하신 내용중에서 조금 이해가 안되는 부분이 있는데요.
: 물론 form1 의 헤더파일을 form2에서 인클루드 시키면 다시 객체가 초기화가 되어 이전에 form1에서 사용했던 계산값들이 모두 없어집니다.
이런 일은 없습니다. 만약 폼의 헤더에 임의로 새로운 전역 객체를 추가했다면
그럴 수도 있습니다만, 자동으로 생성된 폼 헤더 자체는 폼의 클래스와 그 클래스의
형으로 선언된 포인터 하나만 있을 뿐, 그외의 어떤 객체 생성부분도 없죠.
그러므로 Form1을 Form2에서 인클루드해도 별다른 문제는 없습니다.
그 다음으로, 공유하려고 하는 객체가 폼 클래스의 멤버라면, 그냥 퍼블릭으로
선언하고 다른 폼에서 억세스할 수 있습니다. 만약 폼1의 퍼블릭 멤버로
int MyVar; 라고 선언된 변수가 있다면, 폼2의 바디에서는 폼1의 헤더파일을
인클루드하고, 폼1->MyVar 라는 식으로 억세스할 수 있죠.
만약 폼 클래스의 멤버가 아니라면, 그 객체를 extern으로 선언하고 참조하려는
다른 유닛(폼에서든 혹은 헤더에서든)에서도 extern 이름; 이런식이면 됩니다.
형 이름은 지정해줄 필요가 없구요.
질문의 정확한 내용을 알수가 없어 생각나는대로만 적어봤습니다.
혹 제가 잘못짚었다면 좀더 구체적으로 다시한번 질문을 올려주시기 바랍니다.
작성하시려는 소스의 구체적인 소스 일부를 보여주시면 가장 좋겠구요.
그럼 참고하시길...
|