Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Developing U++ » U++ Developers corner » Proposed change to U++ to allow owning children.
Re: Proposed change to U++ to allow owning children. [message #31696 is a reply to message #31695] Sun, 20 March 2011 14:28 Go to previous messageGo to previous message
Lance is currently offline  Lance
Messages: 533
Registered: March 2007
Contributor
It just come to me that we can change the interface slightly to make it unnecessary/impossible for end users to use new directly.

Add a template member function to the Ctrl class

class Ctrl...
{
...
     bool owned : 1;
....
protected:
    bool IsOwned()const{ return owned; }
    Ctrl& Owned(bool v){ owned=v; return *this; }

public:
    template <typename ChildType>
    ChildType& AddOwned()
    {
        ChildType* p=new ChildType();
        p->Owned();
        (void)Add(p);
        return *p;
    }


    template <typename ChildType, typename T>
    ChildType& AddOwned(T& t)
    {
        ChildType* p=new ChildType(t);
        p->Owned();
        (void)Add(p);
        return *p;
    }

    // return ChildType so that user can further set its
    // properties.

    // The IsOwned and Owned functions will be demoted to protected
    // so that they are available only to libary developers
    //
    // whether a child is owned is a one time decision.
    // an owned child will not be able to be reverted to unowned
    // by end user (without derive from the Ctrl class or its 
    // derivatives), but he/she is free to change parents for it
    //
    // Unless the end user uses some hackish practice,
    // library developers can be assured the owned flag
    // is reliable and predictable. 
};

[Updated on: Sun, 20 March 2011 15:17]

Report message to a moderator

 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Get MAC addresses for windows and linux
Next Topic: Testing framework in U++.
Goto Forum:
  


Current Time: Thu Jun 06 22:56:12 CEST 2024

Total time taken to generate the page: 0.01554 seconds