티스토리 뷰

공부 이야기

[C] create 함수 구성

판다(panda) 2009. 1. 30. 00:01
// create 함수

#include "stdafx.h"
#include <stdio.h>


// 노출시킬 A 클래스

class A
{
public:
    static A *Create();
    virtual void foo() = 0;              // 순수 가상 클래스
};
// 노출시키지 않을 B, C 클래스
class B : public A
{
public:
    virtual void foo() { printf("B->foo()\n"); }
};

class
C : public A
{
public:
    virtual void foo() { printf("C->foo()\n"); }
};

int
env = 0;                 // 0 이면 B 클래스를 조건, 1 이면 C 클래스 조건
A *A::Create()
{
    if ( env == 0 )
    return new B; // 0 이면 B 클래스
    return new C; // 1 이면 C 클래스
// 필요에 따라 클래스 변환
}

int _tmain(int argc, _TCHAR* argv[])
{
    A *p = A::Create();
    p->foo();
    delete p;
    return 0;
}

실행 결과..