C# 包装内联函数

C# 包装内联函数,c#,c++,c++-cli,wrapper,C#,C++,C++ Cli,Wrapper,可能重复: 我用C++ CLI包装C++类。头文件如下所示: pabcon.h class PABCon { private: unsigned int maxIndex; long byteSize; public: __declspec(dllexport) inline unsigned int GetMaxIndex() { return this->maxIndex; }; __declspec(dllexport

可能重复:

我用C++ CLI包装C++类。头文件如下所示:

pabcon.h

class PABCon {
private:
        unsigned int maxIndex;      
        long byteSize;  
public:
    __declspec(dllexport) inline unsigned int GetMaxIndex() { return this->maxIndex; };
    __declspec(dllexport) void invertData();
};
public ref class PABConWrapper
{
private:
    PABCon *pabc;

public:
    PABConWrapper();
    ~PABConWrapper();
    void invertData();
};
我以这种方式包装非内联函数:

pabconwrapper.h

class PABCon {
private:
        unsigned int maxIndex;      
        long byteSize;  
public:
    __declspec(dllexport) inline unsigned int GetMaxIndex() { return this->maxIndex; };
    __declspec(dllexport) void invertData();
};
public ref class PABConWrapper
{
private:
    PABCon *pabc;

public:
    PABConWrapper();
    ~PABConWrapper();
    void invertData();
};
pabconwrapper.cpp

PABConWrapper::PABConWrapper() : pabc(new PABCon())
{

}

void PABConWrapper::invertData()
{
    pabc->invertData();
}

PABConWrapper::~PABConWrapper()
{
    delete pabc;
}
我的问题是:

1)包装<强>内联<强> C++函数的最佳方法是什么?< /P> 2) 如何处理pabcon.h中定义的私有变量?我也该把它们包起来吗

谢谢


P.S.S.我上次接触C++是在4年前,从那时起就用C语言编码了。 inline:内联标记方法是一种指令,用于编译器不发出函数调用,而是获取方法的内容,并将其直接放入调用函数中。我相信这只是建议,编译器可以选择发出函数调用。无论如何,从C++/CLI调用此函数时不需要做任何花哨的事情,因此在包装它时也不需要做任何花哨的事情。只需像其他方法一样包装它

私有变量:如果它们是私有变量,那么使用<代码> PABCon < /代码>的非托管C++代码将无法访问它们。

PABCon
的公共接口只是公共方法,所以这就是您需要担心的全部。(如果C++类有任何公共变量,那么您可以通过在C++中创建属性来封装它们。)
~PABConWrapper
:在C++/CLI中,
~
不是析构函数,而是dispose方法。正如现在实现的那样,如果忘记处理新类,您将有内存泄漏。至少,将
~
切换到
,并声明终结器。理想情况下,实现这两个
~
,删除这两个方法中的非托管对象(使用适当的空检查),并在其他方法中添加适当的空检查。这将是IDisposable的一个良好且正确的实现。

您的意思是从C#与它们交互操作吗?您将创建另一个函数来访问私有变量,除非您计划对数据的字节进行嗅探class@Jay没错,我需要c语言中的内联函数,如果您只需要调用,请使用PInvoke。请参阅@杰伊,我不能使用PInvoke作为C++函数不是静态的。那么,做一个静态的函数:)你还试图“内联”,因为你不能内联已经内联的东西…特别感谢指向我的析构函数/终结器。