참고 링크 : http://playlyun.tistory.com/88
내 프로젝트 환경 : DX9
빌드는 잘됨.
디버그모드로 실행하니 중단!
Class B가 Class A 멤버변수를 가지고 있는데, 이를 A* a;로 할지, A a;로 할지 고민을 하다가,
Class B
{
A* a; // 혹은 A a;
B()
{
a = new A; // 혹은 지우기.
}
void FuncB(void)
{
a->FuncA();// 혹은 a.FuncA();
}
}
class A
{
void FuncA();
}
포인터변수(A* a)를 정적 멤버변수(A a)로 바꾸다가 다시 돌아왔는데(A* a)
new로 동적할당하는 부분을 지워버리고(a = new A)
함수를 호출했다.(a->FuncA())
그래서 에러남.
프로젝트 크기가 작을 땐 에러가 잘 보였는데, 커지니까 이런 부분도 놓치는구나...허허... (프로젝트 작게해서 테스트 다시 해보니까 에러문구가 다르고, 작을 때가 더 명확하게 에러문구 새로 뜬다)
기본중의 기본인데, 에러는 익숙하지 않게 나서 뭐지...? 했네ㅎ
void main(void)
{
A a;
a.FuncA(); // Good
A* pa;
pa->FuncA(); // Error
A* paa = new A;
paa->FuncA(); // Good
}
'C++' 카테고리의 다른 글
_countof 는 포인터로 하면 안된다. (0) | 2017.06.30 |
---|---|
문자열 char, wchar, TCHAR 비교 ( ASCII, Unicode 비교 ) (1) | 2017.06.20 |
[VS] 정규식 활용하여 #if !define() 전처리기 지시문 #if define() #else로 수정하기 (0) | 2017.02.21 |
Function pointer로 클래스 멤버 함수 호출 (0) | 2016.12.29 |
reinterpret_cast 정리 (0) | 2016.12.14 |