C++ SDL_Mixer Problem bei der Übergabe eines String Parameters

Abcd12345

Lt. Junior Grade
Registriert
März 2006
Beiträge
483
Hi,

Ich habe eine Klasse geschrieben die eine Funktion hat mit der es möglich sein soll per Parameter übergabe unterschiedliche Sounds zu laden. Das Probem ist das die Übergabe eines String Types nicht akzeptiert wird.

Hier ist der Klassenheader:
Code:
#ifndef Sound_HPP
#define Sound_HPP

#include <SDL.h>
#include <SDL_mixer.h> 
#include <stdlib.h>
#include <string>

using namespace std;

class CSound
{

 Mix_Chunk *m_sound;     //Pointer to our sound, in memory
 int m_channel;          //Channel on which our sound is played 

void Load(string File);	
void Play();
void Free();
	
};

#endif

Und hier die Funktionen, die dazugehören:
Code:
#include "Sound.hpp"

void CSound :: Load(string File)
{
	 //Load our WAV file from disk 
	 m_sound = Mix_LoadWAV(File);
   if(m_sound == NULL)
   {
      printf("Unable to load WAV file: %s\n", Mix_GetError());
   } 

}
	
void CSound :: Play()
{

 //Play our sound file, and capture the channel on which it is played
   m_channel = Mix_PlayChannel(-1, m_sound, 0);
   if(m_channel == -1) {
      printf("Unable to play WAV file: %s\n", Mix_GetError());
   } 

}

void CSound :: Free()
{

   //Release the memory allocated to our sound
   Mix_FreeChunk(m_sound); 

}

Follgende Fehlermeldung bekomme ich:

Code:
--------------------Konfiguration: SMW_Engine_01 - Win32 Debug--------------------
Kompilierung läuft...
Sound.cpp
c:\program files\super mario engine\visual c 6.0 engine\smw_engine15\sound.cpp(6) : error C2664: 'SDL_RWFromFile' : Konvertierung des Parameters 1 von 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' in 'cons
t char *' nicht moeglich
        Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
Fehler beim Ausführen von cl.exe.

SMW_Engine_01.exe - 1 Fehler, 0 Warnung(en)

Die Fehlermeldung bezieht sich auf diese Zeile:

Code:
m_sound = Mix_LoadWAV(File);

Wie kann ich diesen Fehler umgehen, so dass es möglich ist per Parameterangabe zu bestimmen, welcher Sound geladen werden soll?
 
Code:
m_sound = Mix_LoadWAV(File.c_str());
Die Funktion erwartet ein Char-Array, keinen std::string, wie aus der Fehlermeldung ersichtlich ist. Mit std::string.c_str() kannst dir von einem std::string die Repräsentation als Char-Array zurückgeben lassen.
Dieses Char-Array ist nur solange gültig wie das std::string Objekt existiert und du es nicht veränderst.
 
Zuletzt bearbeitet:
Zurück
Oben