Я создаю программу, в которой пользователь должен идентифицировать определенные аккорды.Я использую SDL для рендеринга текста и фигур на графический интерфейс и SDL_Mixer для загрузки звуков.Программа потребует от пользователя воспроизвести звук и угадать звук, который воспроизводился с помощью ряда параметров.В остальном программа работает нормально.Однако проблема возникла, когда я попытался реализовать способ загрузки и работы со звуками.Весь приведенный ниже код инкапсулирован в класс.
Я попытался закомментировать некоторые части кода и обнаружил, что ошибка возникает, когда я пытаюсь добавить звуки в вектор с помощью emplace_back ().Ошибка возникает в строке 881 файла с именем xmemory0.Это код, в котором возникает ошибка "_Objty (_STD forward <_Types> (_ Args) ...);".
Этот код имеет свой спецификатор доступа, определенный как private
//Container to hold the sound data
std::vector<Sound*>Sounds;
//Container to hold the randomly selected sounds;
std::vector<Sound*> randomSounds;
Sound* aMinor{ new Sound{} };
Sound* aMajor{ new Sound{} };
Sound* a7{ new Sound{} };
Sound* aMajor7{ new Sound{} };
Sound* cMajor{ new Sound{} };
Sound* dMajor{ new Sound{} };
Sound* dMinor{ new Sound{} };
Sound* eMajor{ new Sound{} };
Sound* eMinor{ new Sound{} };
Sound* eMinor7{ new Sound{} };
Sound* eMajor7{ new Sound{} };
Sound* fMajor{ new Sound{} };
Sound* fMinor{ new Sound{} };
Sound* gMajor{ new Sound{} };
//These are the pointers for the randomly selected sounds
Sound* randomSoundLeft;
Sound* randomSoundMiddle;
Sound* randomSoundRight;
//Pointer for the sound which the user will play
Sound* currentPlayingSound;
Этот код определен в методе «загрузки данных»
//Add sounds to vector
Sounds.emplace_back(aMinor, aMajor, aMajor7,
a7,cMajor, dMajor, dMinor,
eMajor, eMajor7, eMinor, eMinor7,
fMajor, fMinor, gMajor);
//Load sounds
if (!aMinor->loadSound("Chords/A_minor.wav")
or !aMajor->loadSound("Chords/A_major.wav")
or !a7->loadSound("Chords/A_7.wav")
or !aMajor7->loadSound("Chords/A_major7.wav")
or !cMajor->loadSound("Chords/C_major.wav")
or !dMajor->loadSound("Chords/D_major.wav")
or !dMinor->loadSound("Chords/D_minor.wav")
or !eMajor->loadSound("Chords/E_major.wav")
or !eMajor7->loadSound("Chords/E_major7.wav")
or !eMinor->loadSound("Chords/E_minor.wav")
or !eMinor7->loadSound("Chords/E_minor7.wav")
or !fMajor->loadSound("Chords/F_major.wav")
or !fMinor->loadSound("Chords/F_minor.wav")
or !gMajor->loadSound("Chords/G_major.wav")) {
printf("One or more sounds couldn't be loaded! %s\n", Mix_GetError());
}
//Set chord names
aMinor->setChordName("A Minor", black, renderer, mediumFont);
aMajor->setChordName("A Major", black, renderer, mediumFont);
a7->setChordName("A7", black, renderer, mediumFont);
aMajor7->setChordName("A Major7", black, renderer, mediumFont);
cMajor->setChordName("C Major", black, renderer, mediumFont);
dMajor->setChordName("D Major", black, renderer, mediumFont);
dMinor->setChordName("D Minor", black, renderer, mediumFont);
eMajor->setChordName("E Major", black, renderer, mediumFont);
eMajor7->setChordName("E Major7", black, renderer, mediumFont);
eMinor->setChordName("E Minor", black, renderer, mediumFont);
eMinor7->setChordName("E Minor7", black, renderer, mediumFont);
fMajor->setChordName("F Major", black, renderer, mediumFont);
fMinor->setChordName("F Minor", black, renderer, mediumFont);
gMajor->setChordName("G Major", black, renderer, mediumFont);
Этот код определен в методе «обновления»
//Used to prevent this section running in the normal game loop
if (rounds == changeLevel) {
//Randomly choose sounds
randomSoundLeft = Sounds.at(rand() % Sounds.size());
randomSoundMiddle = Sounds.at(rand() % Sounds.size());
randomSoundRight = Sounds.at(rand() % Sounds.size());
//Create a new container and add the possible choices to the container
randomSounds.emplace_back(randomSoundLeft, randomSoundMiddle, randomSoundRight);
//Randomly chose one of the options to be the sound that the user plays
currentPlayingSound = randomSounds.at(rand() % randomSounds.size());
++changeLevel;
}
Я ожидал, что аккорды, содержащие имя и звук, будутбыть добавлены в вектор без проблем.Тем не менее, у меня есть эта ошибка: Ошибка C2440 «инициализация»: не удается преобразовать из «список инициализатора» в «_Objty»