我正在创建一个.net托管包装器。所有代码都是用C ++编写的,我使用C ++ / CLI创建一个包装器。
C ++类中的某些函数处于受保护级别,因此我无法包装这些函数。每当我尝试包装受保护的函数时,我继续得到“无法访问在类错误中声明的受保护成员。
有解决方法吗?
答案 0 :(得分:2)
受保护的方法只能在类或其子类中调用。
不需要包装受保护的方法,因为它只是首先从类层次结构中调用。使用包装器的应用程序不在C ++或C ++ / CLI类的类层次结构中。
即使你能够从你的包装类调用受保护的方法,谁会调用它?包装类中的方法也将被声明为protected,包装类的使用者将无法调用它。
答案 1 :(得分:1)
创建一个派生自现有非托管类的新非托管类,并将受保护的成员重新公开为public。然后创建一个托管类来包装新派生的类,并让 it 在托管类型层次结构中将受保护的原始成员公开为受保护的。