[C++-sig] How to make use of -> (dereferncing) operator in pyplusplus
vishal bayskar
vishal.bayskar at nechclst.in
Wed Apr 14 09:25:20 CEST 2010
Hi I have a requirement of using dereferencing pointer, like in the below
code
checkSmartPtr.h
============
#include<iostream>
#include"test.h"
using namespace std;
template<class T>
class SmartPtr
{
public:
SmartPtr(T *ptr):pointee(ptr)
{
}
T *operator->()
{
return pointee;
}
private:
T *pointee;
};
SmartPtr<Test> make_test()
{
return SmartPtr<Test>(new Test(5));
}
void do_something(SmartPtr<Test> f)
{
f->display();
}
test.h
====
#include<iostream>
using namespace std;
class Test
{
public:
Test(int i);
void display();
int getNum();
private:
int x;
};
test.cpp
=====
#include<iostream>
#include"test.h"
using namespace std;
// a class for testing purpose only(Smart ptr can wrap the object of this
class)
Test::Test(int i): x(i)
{
}
void Test::display()
{
cout << "value of x: " << this->x << endl;
}
int Test::getNum()
{
return this->x;
}
Like in cpp I can use the display() function using
Test *test = new Test(10);
SmartPtr<Test> obj1(test);
obj1->display();
How would I use it in python from the binding generated by pyplusplus?
When I generate the wrapper for checkSmartPtr.h using pyplusplus
Below warnings displayed. Looking at warnings it seems like operator -> is
not supported in pyplusplus.
-------------
WARNING: Test * SmartPtr<Test>::operator->() [member operator]
> compilation error W1014: "operator->" is not supported. See Boost.Python
> documentation:
> http://www.boost.org/libs/python/doc/v2/operators.html#introduction.
WARNING: Test * SmartPtr<Test>::operator->() [member operator]
> compilation error W1050: The function returns "Test *" type. You have to
> specify a call policies.Be sure to take
> a look on Py++ defined call policies: http://language-
> binding.net/pyplusplus/documentation/functions/call_policies.html#py-defined-call-policies
----------
If operator -> is not supported then what is the mechanism for using it?
--
View this message in context: http://old.nabble.com/How-to-make-use-of--%3E-%28dereferncing%29-operator-in-pyplusplus-tp28239246p28239246.html
Sent from the Python - c++-sig mailing list archive at Nabble.com.
More information about the Cplusplus-sig
mailing list