Hello,
the Py++ documentation has several recommendations how to solve registration 
order problems with member functions.
Like for example this solution (from the documentation):
>s2 = mb.class_( "S2" )
>s2.member_function( "do_smth" ).use_overload_macro = True

But what to do if the class constructors have a registration order problem? I 
tried
>test = mb.class_( "Test" )
>for c in test.constructors():
>  c.use_overload_macro = True
but this doesn't solve the problem described below.

The (condensed) code I want to pythonify is:
--------------------
#include <string>
#include <iostream>
class Test:public std::string{
public:
  Test(std::string);
  Test(char*);
  Test(char);
  void printme();
};
Test::Test(std::string s):std::string(s){
}
Test::Test(char *s):std::string(s){
}
Test::Test(char c):std::string(1,c){
}
void Test::printme(){
  std::cout<<*this<<std::endl;
}
--------------------

However, a test of the generated python module shows:
>In [1]: import testmodule
>In [2]: t=testmodule.Test("Hello")
>In [3]: t.printme()
>H                                              #(expected "Hello" here)

This indicated that the Test(char) constructor is applied although a string was 
given.
How can I solve the problem? If possible only with module builder functions, 
without changes to the C code?

Thanks
Werner



      
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to