2013-04-25 78 views
3

我有一個關於爲在C#中使用的本機C++類創建C++ CLI包裝器的問題。C++ CLI包裝器

下面是一個例子代碼:

#include "stdafx.h" 

#pragma once 

using namespace System; 

namespace Wrapper { 

    class NativeClass 
    { 
    public: 
     NativeClass() {} 
     int Add(int a, int b) 
     { 
      return a+b; 
     } 
    }; 

    public ref class Wrapper 
    { 
    public: 
     Wrapper() {pNative = new NativeClass();} 
     int Add(int a, int b) 
     { 
      return(pNative->Add(a,b)); 
     } 
     ~Wrapper() 
     { 
      delete pNative; 
      pNative = 0; 
     } 
     !Wrapper() 
     { 
      this->~Wrapper(); 
     } 
     //My problem is here. 
     NativeClass* GetNative() 
     { 
      return pNative; 
     } 
    private: 
     NativeClass* pNative; 
    }; 
} 

此代碼工作正常。我需要檢索指向本地類的指針,以便在其他包裝類中使用它。但是,當我使用這個包裝類時,我不希望函數「GetNative」在C#中可見。我怎樣才能隱藏它?

+1

嘗試'內部:'作爲訪問符。 – Medinoc 2013-04-25 09:47:51

+2

如果其他包裝類在同一個程序集中,請使用「internal」而不是「public」。 – 2013-04-25 09:47:54

+0

謝謝。如果他們不在同一個集會中,我該怎麼辦? (這不是我的情況,我只是想知道,非常感謝) – KooKoo 2013-04-25 10:43:43

回答

1

如果其他包裝類在同一個程序集中,請訪問internal而不是公共。 - 羅傑羅蘭13年4月25日在9:47

如果它們不在同一個程序集中? ...

查找到friend assemblies - 塞巴斯蒂安·卡伯特2月1日在15:43