Hello,
I am facing that error when implementing a custom soundstream inherited class.
Here is the code where it is complaining:
#ifndef AUDIOMANAGER_H_INCLUDED
#define AUDIOMANAGER_H_INCLUDED
#include <memory>
#include <vector>
#include <SFML/Audio.hpp>
#include "../nodes/outputNode.h"
class AudioManager;
class customAudioStream : sf::SoundStream{ // HERE IT IS THROWING THE ERROR!
public:
private:
virtual bool onGetData(Chunk& data);
virtual void onSeek(sf::Time timeOffset);
void registerAudioManager(AudioManager* audioManager);
AudioManager* manager;
};
class AudioManager{
public:
AudioManager();
~AudioManager();
void registerOutputNode(std::unique_ptr<outputNode> newOutNode);
std::vector<sf::Int16> getOutputAudio();
private:
std::unique_ptr<outputNode> outNode;
customAudioStream stream;
};
#endif // AUDIOMANAGER_H_INCLUDED
There is some code for outputNode and so on that is missing, since the error seems to be unrelated to that parts.
Do you have any idea what that could be?
My full code in this class is:
AudioManager.h:
#ifndef AUDIOMANAGER_H_INCLUDED
#define AUDIOMANAGER_H_INCLUDED
#include <memory>
#include <vector>
#include <SFML/Audio.hpp>
#include "utils.h"
#include "../nodes/outputNode.h"
class AudioManager;
class customAudioStream : public sf::SoundStream{
public:
private:
virtual bool onGetData(Chunk& data);
virtual void onSeek(sf::Time timeOffset);
void registerAudioManager(AudioManager* audioManager);
AudioManager* manager;
};
class AudioManager{
public:
AudioManager();
~AudioManager();
void registerOutputNode(std::unique_ptr<outputNode> newOutNode);
std::vector<sf::Int16>* getOutputAudio();
private:
std::unique_ptr<outputNode> outNode;
customAudioStream stream;
};
#endif // AUDIOMANAGER_H_INCLUDED
AudioManager.cpp:
#include "AudioManager.h"
bool customAudioStream::onGetData(Chunk& data){
return true;
}
void customAudioStream::onSeek(sf::Time timeOffset){
}
void customAudioStream::registerAudioManager(AudioManager* audioManager){
manager = audioManager;
}
AudioManager::AudioManager(){
}
AudioManager::~AudioManager(){
}
void AudioManager::registerOutputNode(std::unique_ptr<outputNode> newOutputNode){
outNode = std::move(newOutputNode);
}
std::vector<sf::Int16>* AudioManager::getOutputAudio(){
std::vector<sf::Int16>* output;
output->reserve(size);
DataBlock* data;
data = outNode->getAudioData();
std::vector<boost::variant<sf::Int16, int>>* rawData = data->getData();
for(int counter = 0; counter < rawData->size(); counter++){
(*output)[counter] = boost::get<sf::Int16>((*rawData)[counter]);
}
return output;
}