包装INLINE函数
Wrapping INLINE functions
可能重复:
C++/CLI混合模式DLL创建
我正在使用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();
};
我用这种方式包装非内联函数:
pabconwrapper.h
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( 包装inlinec++函数的最佳方式是什么?
2( 我应该如何处理pabcon.h中定义的私有变量?我也应该把它们包起来吗?
感谢
附言:我上一次接触C++是在4年前,从那时起我就用C#编码了。
inline:在内联中标记方法是一条指令,要求编译器不要发出函数调用,而是获取方法的内容,并将其直接放入调用函数中。我相信这只是一个建议,编译器无论如何都可以选择发出函数调用。无论如何,当从C++/CLI调用此函数时,您不需要做任何花哨的事情,所以在包装它时也不需要做什么花哨的事情。只需像包装其他方法一样包装它即可。
private变量:如果它们是private变量,则使用PABCon
的非托管C++代码将无法访问它们。PABCon
的公共接口只是公共方法,所以您只需要担心这些。(如果C++类有任何公共变量,那么您可以通过在C++/CLI中创建一个属性来包装它们。(
~PABConWrapper
:在C++/CLI中,~
不是析构函数,而是dispose方法。正如现在实现的那样,如果您忘记处理新类,就会出现内存泄漏。至少,将~
切换为!
,并声明终结器。理想情况下,同时实现!
和~
,删除两个方法中的非托管对象(使用适当的null检查(,并在其他方法中添加适当的null检测。这将是一个很好的&IDisposable的正确实施。
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 激励'inline'说明符的真实世界示例?
- 'inline'变量可以像内联函数一样内联吗?
- C++不使用"inline"或"static"无类函数的关键字时出现重定义链接错误
- 将新元素推送到函数指针映射中 "inline" ?
- 在头文件中实现的函数的static与inline
- 成员函数模板"inline"需要
- C++错误:'inline'只能出现在函数上
- 什么是'extern inline'函数以及何时使用?
- "inline"隐式于类定义中定义的C++成员函数中
- 'inline'__global__函数以避免多个定义错误
- 我应该在频繁使用的函数上使用“inline”吗?
- c++实现了friend/inline函数
- 让函数包装器与inline一起工作
- 替换函数'operator new'不能声明'inline' [-werror,-winline-new-delete]
- "在线好友…"有什么区别函数和`friend inline…`功能
- 包装INLINE函数
- 模板' inline '函数的静态局部变量
- "inline"函数定义的目的是什么?