달력

32024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

클래스간 포인터

C++ 2011. 3. 31. 10:56
CTestApp, CMainFrame, CTestDoc, CTestView

◎ CTestApp에서
CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();
CTestDoc* pDoc = (CTestDoc*)((CMainFrame*)AfxGetMainWnd())->GetActiveDocument();
CTestView* pView = (CTestView*)((CMainFrame*)AfxGetMainWnd())->GetActiveView();

◎ CMainFrame에서
CTestApp* pApp = (CTestApp*)AfxGetApp();
CTestDoc* pDoc = (CTestDoc*)GetActiveDocument();
CTestView* pView = (CTestView*)GetActiveView();

◎ CTestDoc에서
CTestApp* pApp = (CTestApp*)AfxGetApp();
CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();
CTestView* pView = (CTestView*)((CMainFrame*)AfxGetMainWnd())->GetActiveView();

◎ CTestView에서
CTestApp* pApp = (CTestApp*)AfxGetApp();
CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();
            or (CMainFrame*)GetParent();
CTestDoc* pDoc = (CTestDoc*)((CMainFrame*)AfxGetMainWnd())->GetActiveDocument();
         or (CTestDoc*)GetDocument();
Posted by sukay
|

동적할당

C++ 2011. 3. 9. 20:51

동적할당은 사용자가 필요한 만큼 할당 받아 사용하는 방법이다.
물론 자주 사용 했고 잘 쓰고있다.

여기에 적을 내용은
프로그램 구현 중 할당되었냐 안되었냐를 판단해야 하는 경우가 있다.
물론 예외처리로 필요한 부분이다.

할당에 대한 예외처리를 하게되는경우 처음 포인터를 선언하는 부분에서
초기화를 해주어야 한다.
Ex)
double *p;
if(p)
 printf("ok");

이것은 메모리 에러가 발생하고 접근이 불가능하다
다음은 예제 소스이며 간단히 사용이 가능하다.
Ex)
double *p = NULL;
 if(p)
  printf("No");
 p = new double[10];//동적할당
 if(p)
  printf("yes");
 delete[] p;//할당해제
 if(p)
  printf("2No");
Posted by sukay
|

비쥬얼 스튜디오에서
클래스의 멤버함수가 정의된 부분으로 이동할때
가끔 선언된 부분으로 이동하게 되는 오류가 발생하며


이런 경우 프로젝트 폴더의 ncb 파일을 삭제한뒤 비쥬얼스튜디오를 다시 실행하면
정상적으로 이동이 되는데 이것은 ncb파일이 프로젝트의 전체 소스를 관리하기 때문에
비쥬얼 스튜디오 실행시 ncb파일이 없다면 다시 생성을 해주어 정상적인 사용이 가능하게 해줍니다.
Posted by sukay
|