[clam-devel] ipyclam: trouble with ProcessingConfigs

David García Garzón david.garcia at barcelonamedia.org
Wed May 25 10:48:37 PDT 2011


On Wednesday 25 May 2011 19:09:23 Xavier Serra Román wrote:
> Hi guys,
> I'm now at the part of ipyclam dealing with configurations and I've run
> into some trouble, I defined a c++ class to wrap into python with
> boost.python that holds a processingconfig.
> 
> I need to create the processingconfig in the class from a copy of another
> one so I've defined: ConfigurationProxy(const CLAM::ProcessingConfig &
> prototype)
> 	{
> 		_processingConfig = new CLAM::ProcessingConfig(prototype);
> 	}
> this, obviously. doesn't work because abstract classes cannot be allocated
> but I don't know what else to do.

Use the Component::Species() virtual method. It is redefined in subclasses 
(including ProcessinConfig's derivatives) in a way that it returns an object 
of the same class than the receiver. Not a copy, just the default constructed 
one.

Be carefull on the code below, if you ned the default constructor (do you need 
it?) initialize all the members.

Be also carefull with the copy constructor (generated by default). The default 
copy constructor copies all members, in this case will copy the pointer and 
you will double delete it on the destructor. This might happen not just in 
assignments but also when passing it as parameter or returning not as 
reference,  and it may not be you but maybe boost::python. So my suggestiong 
is to implement it private and assert false inside, so, at least if 
boost::python uses it you will be notified at compilation or runtime.


> The complete code of the class is:
> class ConfigurationProxy
> {
> public:
> 	CLAM::ProcessingConfig * _processingConfig;
> 	ConfigurationProxy() {}
> 	ConfigurationProxy(const CLAM::ProcessingConfig & prototype)
> 	{
> 		_processingConfig = new CLAM::ProcessingConfig(prototype);
> 	}
> 	~ConfigurationProxy()
> 	{
> 		delete _processingConfig;
> 	}
> };
> 
> Thanks!
> _______________________________________________
> clam-devel mailing list
> clam-devel at lists.clam-project.org
> http://lists.clam-project.org/listinfo.cgi/clam-devel-clam-project.org



More information about the clam-devel mailing list