Boost logo

Boost :

From: Oleg Fedtchenko (BoostOleg_at_[hidden])
Date: 2004-10-05 13:31:16


To Peter Dimov

Hi, Peter

Could you, please, tell if is there a smart pointer template to a class data-member.
I failed to find an appropriate pointer among five ones existing in the boost.

I need it for the two tasks appended.

By this time, I have written an extension to intrusive_ptr to meet these needs. If you or anyone else are interested I could post it or send in person.

Oleg
boostoleg_at_[hidden]

Task 1)
 
class A
{
public:
    A(){ m_wData = 0;}
    WORD* GetData(){ return &m_wData}
    A* CreateA( int nOffset){ return new A;}

protected:
    WORD m_wData;
};

main()
{
    A aInstance;
    WORD* pData = aInstance.CreateA( 15)->GetData();
    *pData = 57; // access violation
}
        
Task 2)

class DocActiveX
{
protected:
    Tree* m_pTree;

public:
    ~DocActiveX(){ if(m_pTree) delete m_pTree;}
    bool Load( const char* lpszPath);
    Tree* Parse(){ return m_pTree;}
};

class DocDirect
{
protected:
    Tree* m_pTree;

public:
    ~DocDirect(){ if(m_pTree) delete m_pTree;}
    bool Load( const char* lpszPath);
    Tree* Parse(){ return m_pTree;}
};

class ShowExternal
{
public:
    bool Show( const Tree* pTree);
};

class SomeClass
{
protected:
    Tree* m_pTree;
};

void SomeClass::OnLoad()
{
    DocActiveX* pInstance = new DocActiveX;

    aInstance.Load( lpszSomePath);
    m_pTree = aInstance.Parse();
}

void SomeClass::OnShow()
{
    ShowExternal ashow;
    ashow.Show( m_pTree);
}


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk