包装运算符重载方法

时间:2011-09-16 09:52:33

标签: c++ c++-cli operator-overloading

如何使用C ++ / CLI包装在非托管C ++代码中执行运算符重载的方法?

我在一个组织工作,我没有太多访问他们的源代码,因此不太了解运算符重载函数究竟做了什么。那么有没有办法包装这个方法而不是在C ++ / CLI中重新定义它?

1 个答案:

答案 0 :(得分:1)

我不完全理解,但是,包装本机代码意味着在托管函数中覆盖并执行它。例如,您想要包装此类:

//Native code
class NativeClass
{
  std::vector<int> data;
public:
  int operator[] (int index)
  {
    return data[index];
  }
}


//Managed code
public ref class ManagedClass
{
  NativeClass * nativeClass;
public:
  property int default [int]
  {
    int get (int index) {   return (*nativeClass)[index];   }
  }

  int GetData(int index)
  {
    return (*nativeClass)[index];
  }
}

您可以通过定义索引器和包装本机重载运算符的函数来实现。

简短回答您必须重新定义并确定如何将本机功能公开给托管环境。这就是包装的意思。