使用 C++/CLR 包装器访问受保护的 C++ 方法

Hui Liu-MSFT 40,666 信誉分 Microsoft 供应商
2024-04-02T07:31:14.0866667+00:00

你好

C++/CLI 中是否有用于从 C# 应用程序访问受保护的 C++ 方法的语法?

我目前在 MFC 头文件中的内容:

class CMFCApplication1Doc : public CDocument
{
protected: // create from serialization only
CMFCApplication1Doc() noexcept;
DECLARE_DYNCREATE(CMFCApplication1Doc)

// Attributes
public:

// Operations
public:
int OnTest();

// Overrides
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);

// Implementation
public:
virtual ~CMFCApplication1Doc();

protected:
int TestFunction();

};

And in my Wrapper.cpp

int CSharpMFCWrapper::CSharpMFCWrapperClass::Test()
{
pCC->TestFunction();



   return 0;
}

访问公共功能不会造成任何问题。只是受保护的。

Test() 在我的 Wrapper.h 文件中声明,pCC 指针指向受保护的 C++ 方法。

我试图不更改我引用的底层 C++ 代码,因此提出了这个问题。

Note:此问题总结整理于:Accessing Protected C++ Methods using C++/CLR Wrappers

C++
C++
一种通用的高级编程语言,作为 C 编程语言的扩展而创建,除了用于低级别内存操作的功能外,还具有面向对象、泛型和功能性等特点。
67 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Jiale Xue - MSFT 34,201 信誉分 Microsoft 供应商
    2024-04-02T07:53:52.96+00:00

    你好

    对于子类,可以访问受保护的成员。就我而言,您可以通过子类访问受保护的成员。

    可以创建一个派生自现有非托管类的新类,并将受保护的成员 (TestFunction) 重新公开为公共成员。然后创建一个托管类来包装新派生的类,并让它在托管类型层次结构中将那些最初受保护的成员公开为受保护的成员。


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助