Re: подсчёт ссылок
От: Tom Россия http://www.RSDN.ru
Дата: 23.09.02 11:34
Оценка:
Здравствуйте ml, Вы писали:

ml>привет, all!

ml>есть класс с такими членами:
ml>
ml>    MSXML2::IXSLProcessorPtr    m_spIXSLProcessor;
ml>    MSXML2::IXSLTemplatePtr        m_spIXSLTemplate;
ml>    MSXML2::IXMLDOMDocument2Ptr    m_spStyleSheet;

ml>

ml>в одном из методов они работают:

ml>
ml>    if ( m_spIXSLTemplate == NULL ) {
ml>        hr = m_spIXSLTemplate.CreateInstance(__uuidof(MSXML2::XSLTemplate30));
ml>        if ( FAILED(hr) ) // это лишнее, так как данные смарт поинтеры кидают эксепшн без тебя
ml>            throw _com_error(hr);
ml>        m_spIXSLTemplate.AddRef(); //это тем более лишнее
ml>    }
ml>    
ml>    if ( m_spStyleSheet == NULL) {
ml>        hr = m_spStyleSheet.CreateInstance(__uuidof(MSXML2::FreeThreadedDOMDocument30));
ml>        if ( FAILED(hr) ) //лишнее
ml>            throw _com_error(hr);
ml>        m_spStyleSheet.AddRef(); //лишнее
ml>    }

ml>    m_spStyleSheet->async = VARIANT_FALSE;
ml>    bSuccess = m_spStyleSheet->load(translatorFile);
ml>    m_spIXSLTemplate->PutRefstylesheet(m_spStyleSheet);
ml>                     
ml>    m_spIXSLProcessor = m_spIXSLTemplate->createProcessor();
ml>    m_spIXSLProcessor.AddRef();//лишнее

ml>

ml>а в десктрукторе класса валятся Access violation при удалении описанных выше членов
ml>без AddRef тож не работает
ml>памагите!!!!!

Ты пользуешься смарт поинтерами и явно вызывать AddRef тебе не надо, а если валится даже с AddRef значит проблемма не в этом. Может по подробнее опишешь на удалении какого класса валиться, а лучше тот код на котором валиться
Народная мудрось
всем все никому ничего(с).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.