il codice è molto esteso te ne posto una parte,
codice:
bool CBaseDatabaseSapData::ImportBeamLoads(int* nBLType, int* nBeamID, int* pLCaseNum, CTypedPtrArray<CPtrArray, tagLoadData*> * pLoadDataArray,CString strCase,CSapLoadType *pType)
if(!m_pDM)
		return false;

	CSapBeam * pBeam = m_pDM->getByID(atoi(m_strNameCurrentBeam));
	
	if(pBeam == NULL)
		return false;

	CSapLoadCase *pCase = pBeam->getByID(strCase);
	if(pCase==NULL)	
		return false;
	
	pType = pCase->getByID(*nBLType);
	if(pType==NULL)
		return false;

//count di array interno(privato) di ptype >0
	return true;
la funzione è dichiarata cosi:
codice:
	bool ImportBeamLoads(int* nBLType, int* nBeamID, int* pLCaseNum, CTypedPtrArray<CPtrArray, tagLoadData*> * pLoadDataArray,CString strCase, CSapLoadType *pType);
e la funzione chiamate è questa:
codice:
CSapLoadType * pType = new CSapLoadType();

	pLoadDataArray->RemoveAll();

	if(*pLCaseNum < 0)
		*pLCaseNum = 0;
	tagStaticLCDataTempLogic ACData;
	m_AnalysisCaseNum.Lookup(*pLCaseNum +1 , ACData);
	 m_pData->ImportBeamLoads(&nBLType,&nBeamID, pLCaseNum, pLoadDataArray,ACData.strCase,pType));
	
//count di array interno (privato)di pType è a 0!!!!!