[C++-sig] Wrapping operator=

Pierre Barbier de Reuille pierre.barbier at cirad.fr
Tue May 18 14:22:26 CEST 2004


This is a Python issue : with the '=' operator semantic in Python, you
cannot overide it !

You can create another constructor and have a line like :

msg = Msg("Hello World!")

I think that's you I'd do ...

Pierre

On Tue, 2004-05-18 at 12:06, James Gunn wrote:
> *** Before acting on this e-mail or opening any attachment you are
> advised to read the disclaimer at the end of this e-mail ***
> 
> Hi,
>  
> I'm trying to wrap a very simple class (see below) that has operator=
> but I can't seem to get it right. Can anyone help please?
>  
> class Msg
> {    
> public:
>    Msg() : m_msg() {}
>    ~Msg() {}
>  
>    Msg& operator= (const std::string& msg)
>    {
>        m_msg = msg;
>        return *this;
>    }
>  
>    std::string Get() const { return m_msg; }
>         
>         void Set( const std::string& msg ) { m_msg = msg; }
>  
> private:
>     std::string m_msg;
> };
>  
> I want to be able to allow users to work with the Msg class (from
> Python) as follows:
> msg = "Hello World"
>  
> However, at the moment I've had to use add_property to wrap Get & Set
> which means users then have to do the following:
> msg.value = "Hello World"
>  
> Anyone got any ideas of how I can do this? 
>  
> Thanks in advance.
>  
> James Gunn
> Software Developer
> --LongSig
>  
> Computer Bureau
> Communisis DM
> Manston Lane
> Crossgates
> Leeds
> LS15 8AH
>  
> Telephone +44 (0)113 225 5306
> Fax       +44 (0)113 225 5921
> Email     James.Gunn at communisis-dm.co.uk
>  
> 
> **********************************************************************
> Please note: This e-mail and its attachments contain only the opinions
> of the sender and do not necessarily reflect the policy(s) of the
> communisis group in general. 
> 
> Employees of the communisis group are required not to make any
> defamatory statements and not to infringe or authorise any
> infringement of copyright or any other legal right by e-mail. Any such
> communication is therefore outside the scope of employment of the
> individual concerned. The communisis group will not accept any
> liability in respect of such a communication.
> 
> Confidentiality: This e-mail and any attachments, together with their
> contents, are confidential unless otherwise explicitly stated in
> writing by the sender of this e-mail and are for the intended
> recipient only. If they have come to you in error you must not take
> any action in respect of them, which includes but is not limited to
> reproducing, sending or storing them, other than to notifying the
> sender immediately of the mistake, and deleting the e-mail, any
> attachments and any reproductions made by replying to it.
> 
> Viruses: This e-mail and any attachments have been scanned for viruses
> but we cannot guarantee that they are virus free. The recipient should
> check this e-mail and any attachments for viruses. The communisis
> group accepts no responsibility for any damage caused by any virus
> transmitted by this e-mail or any of its attachments. In the event of
> any unauthorised copying or forwarding, the recipient will be required
> to indemnify the communisis group against any claim for loss or damage
> caused by any viruses or otherwise.
> **********************************************************************
> 
> ______________________________________________________________________
> This email has been scanned by the MessageLabs Email Security System.
> For more information please visit http://www.messagelabs.com/email 
> ______________________________________________________________________
> 
> 
> ______________________________________________________________________
> _______________________________________________
> C++-sig mailing list
> C++-sig at python.org
> http://mail.python.org/mailman/listinfo/c++-sig
-- 
Pierre Barbier de Reuille

INRA - UMR Cirad/Inra/Cnrs/Univ.MontpellierII AMAP
Botanique et Bio-informatique de l'Architecture des Plantes
TA40/PSII, Boulevard de la Lironde
34398 MONTPELLIER CEDEX 5, France

tel   : (33) 4 67 61 65 77    fax   : (33) 4 67 61 56 68 





More information about the Cplusplus-sig mailing list