[C++-sig] Wrapping an abstract interface

Andreas Kloeckner ak at ixion.net
Sat Feb 14 15:58:26 CET 2004


Hey again, 

I have an abstract interface like this:

8< ----------------------------------------------------------------------------
class MatrixOperator
{
  virtual void apply(const Vector &) const = 0;
};
8< ----------------------------------------------------------------------------

which I want to wrap. In Python, I want to pass this function a Numeric
array.  Vector is a class that could be initialized to share data with a
Numeric array.

How would I do such a thing?

- Can I create a subclass of MatrixOperator that takes a Numeric array
  and use the class_ HeldType feature to force its use?

- Can I write a custom value converter that would to this
  Numeric.array->Vector conversion for me? How?

or

- Do I need to do this the "easy way", by having a separate function
  applyOperator(const MatrixOperator &,NumericArray &)?


This boils down to this: Can I make it appear from Python as if a class
has a method for which no member function in C++ actually exists (but
maybe just a regular function)?

Andreas





More information about the Cplusplus-sig mailing list