class A
{
void Init();
AbstractB* b; //추상 클래스
}
-----------------------------
원본
void A::Init()
{
//이전 작업
CreateB(&b); //CreateB는 외부 함수라 이쪽에서 수정못함
//이후 작업
}
-----------------------------
뭔가 앞뒤 내용이 너무 많아서 함수를 분리해서
---------------------------------
현재
void Create(AbstractB** b)
{
//b에 필요한 작업
CreateB(b);
}
-----------------------------
현재 위 함수 상태인데
------------------------------
AbstractB* GetB()
{
//B에 필요한 작업
AbstractB* localB;
CreateB(&localb);
return localB;
}
----------------------------
대충 이런 형식으로 하고싶단 말이지
클래스가 추상 클래스가 아니면 new 때려박아서 어떻게될거같기도한데 추상 클래스임
그렇다고 new 안쓰면 지역 포인터 반환이니 함수 끝나는 시점에서 메모리 잘릴거같고
----------------------------------------
AbstractB GetB()
{
//B에 필요한 작업
AbstractB* localB;
CreateB(&localb);
return *localB;
}
void A::Init()
{
//앞 함수들 실행
b=&GetB();
//뒤 함수들 실행
}
----------------------------------------
이렇게하면...똑같이 삭제되...나? 씨바...
다이렉트X쪽 ID3D11Texture2D 같은 버퍼 할당쪽에 쓰려고 함
GetB는 A가 선언된 헤더와 다른 헤더에 선언되있음. GetB를 A의 메소드로 밀어넣는건 안하고싶다. A다른 함수도 많아서...
new 할당하면 method 안에서 포인터를 넘기든 지랄을 하든 delete 할때까지 힙에 상주하는데 뭔 걱정?
ㄴ new 쓰려하면 추상 클래스라 엿이나 쳐먹으라 해서 못씀
문제의 요점을 잘 모르겠네 ㅎ
그냥 추상은 포인터 역활만 하는것이면 그냥 받아서 형변환 시켜