У меня есть COM-объект. В основном классе я сделал двух публичных участников.C++ Доступ к открытому члену других классов
public:
HANDLE m_hVoiceData;
void* m_pVoiceData;
Они предназначены для картографирования файла. Я сопоставляю файл при создании объекта COM.
Основной класс COM-объекта имеет частный класс. Из этого частного класса я хочу, чтобы получить доступ к этим открытым членам:
Это, как я хочу, чтобы получить доступ к отображенный файл:
memcpy(nEncodedBytes,& CTTSEngObj::m_pVoiceData[iFirstByteToRead], iLenCompressedBytes);
Но компилятор не нравится это. В нем говорится, что «Ссылка на нестатические элементы должна быть относительно определенного объекта».
Может кто-нибудь, пожалуйста, скажите, как это сделать правильно? Я знаю, что сделать публикацию членом в основном классе, но мне нужно это сделать, потому что частный класс (как упоминалось выше) также имеет частные классы, и все они нуждаются в этом члене для доступа к определенному отображаемому файлу.
Это где я карта файл:
STDMETHODIMP CTTSEngObj::SetObjectToken(ISpObjectToken * pToken)
{
HRESULT hr = SpGenericSetObjectToken(pToken, m_cpToken);
//--- Map the voice data so it will be shared among all instances
// Note: This is a good example of how to memory map and share
// your voice data across instances.
TCHAR szFileName[MAX_PATH+1];
GetModuleFileName(_Module.m_hInst, szFileName, MAX_PATH+1);
StrCpy(PathFindFileName(szFileName), _T("data.dat"));
if(SUCCEEDED(hr))
{
USES_CONVERSION;//needed to make T2W work
hr = MapFile(T2W(szFileName), &m_hVoiceData, &m_pVoiceData);
}
А потом
STDMETHODIMP CTTSEngObj::Speak(DWORD dwSpeakFlags,
REFGUID rguidFormatId,
const WAVEFORMATEX * pWaveFormatEx,
const SPVTEXTFRAG* pTextFragList,
ISpTTSEngineSite* pOutputSite)
{
HRESULT hr = S_OK;
//--- Check args
if(SP_IS_BAD_INTERFACE_PTR(pOutputSite) ||
SP_IS_BAD_READ_PTR(pTextFragList) )
{
hr = E_INVALIDARG;
return hr;
}
m_App.DoSomething();
m_App является классом. Это частный член основного класса COM-объекта.
Этот класс имеет подклассы, например: CTTSEngObj.m_App.SomeSmallClass
И SomeSmallClass необходимо получить доступ отображенный файл.
Просьба показать еще код –
«Основной класс COM-объекта имеет частный класс». Что именно это значит? У вас есть вложенный класс? – jogojapan
Ну это не _real_ C++ ...: P –