Novità c++ almeno per me
Ho trovato questo codice che usa una chiamata nella classe come un void ma non lo è. E' una cosa che non avevo mai visto ne ho mai fatto:
l'esempio esatto della costruzione della classe del cpp e h:
//cpp
CSound3D::CSound3D(char* szFile,IDirectMusicAudioPath8* pAudioPath)
{
... ecc,ecc.
----------------
//h
class CSound3D
{
public:
CSound3D(char*,IDirectMusicAudioPath8*);
~CSound3D();
... ecc,ecc..
----------------
questa è la chiamata dal main.cpp
CSound3D Sound1("mio.wav",NULL);
bhè questo è chiaro CSound3D crea l'oggetto non puntatore e passa 2 argomenti al costrutto:
CSound3D::CSound3D(char* szFile,IDirectMusicAudioPath8* pAudioPath)
premetto che è solo a scopo di capire il perchè non mi funziona ciò che vorrei fare:
Invece di creare tanti oggetti tipo Sound1 Sound2 ecc,ecc o pensato di usare un oggetto puntatore facendo così per una matrice di oggetti:
m_pSound[Numero] = new CSound3D();
m_pSound[Numero](fileSound,NULL);
ma queste 2 linee sopra il compilatore non le digerisce
ne tantomeno questa che è improponibile anzi errata proprio:
CSound3D m_pSound[Numero](fileSound,NULL);
--------------------------------
E' corretto invece snaturare la routine della classe e fare:
void CSound3D::Inizia(char* szFile,IDirectMusicAudioPath8* pAudioPath)
e poi chiamarla cosi:
m_pSound[Numero] = new CSound3D();
m_pSound[Numero]->Inizia(fileSound,NULL);
------------
Qualcuno sa come richiamare quel CSound3D::CSound3D(char* szFile,IDirectMusicAudioPath8* pAudioPath)
{
con un oggetto puntatore come detto sopra??
|