[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