/////////// Managed Type, Native Type 공통

1. Native Type와 Managed Type 교차 상속 불가(H.Sutter에 의하면 지원 예정이라고.)
class Native {};
ref class Managed: public Native {};    //불가

ref class Clr {};
class Native : public Managed {};       //불가
/////////// Managed Type에서 Native Type을 사용할 경우.

1. Managed Type의 멤버로 Native Type 객체 생성 불가. 단, pointer Type일 경우에는 가능.
class Native {};

ref class Clr
{
public:
    Native    native;             //불가
    Native*   pNative;            //가능
};
2. Native enum 역시 마찬가지. Managed Type 내부에 Native enum 정의 불가.
ref class Clr
{
    enum { nativeEnum };        //불가
}
3. Managed Type의 Method 안에서는 Native Type 생성 및 사용 가능(포인터, 객체 모두 포함해서)
class Native {};

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

    }
}
4. 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)로 계속...
Posted by 어쨌건간에