title: "C++/CLI로 Managed Type, Native Type 짬뽕하기(1/2)"
description: "C++/CLI로 Managed Type, Native Type 짬뽕하기(1/2)"
cleanUrl: /sw-engineer/cplusplus-cli-mix-managed-native-1
ogImage: ""
floatFirstTOC: right

1. Native Type와 Managed Type 교차 상속 불가(H.Sutter에 의하면 지원 예정이라고.)

class Native {};
ref class Managed: public Native {};    //불가

ref class Clr {};
class Native : public Managed {};       //불가

2. Managed Type의 멤버로 Native Type 객체 생성 불가. 단, pointer Type일 경우에는 가능.

class Native {};

ref class Clr
{
public:
    Native    native;             //불가
    Native*   pNative;            //가능
};

3. Native enum 역시 마찬가지. Managed Type 내부에 Native enum 정의 불가

ref class Clr
{
    enum { nativeEnum };        //불가
}

4. Managed Type의 Method 안에서는 Native Type 생성 및 사용 가능(포인터, 객체 모두 포함해서)

class Native {};

ref class Clr
{
    void Method()
    {
        Native n;                     //가능
        Native* pNative = new Native; //가능
    }
}

5. Managed Type의 Method signature에 Native Type이 포함된 경우, 사용은 가능하나 metadata로 빠지지 않음(다른 CLR language와 호환 불가)

class Native {};

ref class Clr
{
    Native MethodIncludeNative(); //가능하나 다른 CLR 언어와 호환되지 않음
    void MethodIncludeNative(Native n); //가능하나 다른 CLR 언어와 호환되지 않음
}

C++/CLI로 Managed Type, Native Type 짬뽕하기(2/2) 로 계속…