我有一个向向量添加类的基本示例:
std::vector<AudioFile> audioList;
DllExport void add_audio(const char* srcFile, double startSecInSrc, double fromSecInMovie, double toSecInMovie, long id)
{
AudioFile a(id, srcFile, startSecInSrc, fromSecInMovie, toSecInMovie);
audioList.push_back(a);
}
在函数结束时,我得到堆栈在变量a
周围被破坏我做错了什么?
class AudioFile
{
long _id;
std::string _fileLocation;
double _startSecInSrc, _fromSecInMovie, _toSecInMovie;
double _duration;
public:
AudioFile(long _id, std::string _fileLocation, double _startSecInSrc,double _fromSecInMovie, double _toSecInMovie);
~AudioFile();
static bool ComparePredicat(AudioFile first, AudioFile second);
};
bool AudioFile::ComparePredicat(AudioFile first, AudioFile second)
{
if (first._startSecInSrc <= second._startSecInSrc)
return true;
return false;
}
AudioFile::AudioFile(long id, std::string fileLocation, double startSecInSrc, double fromSecInMovie, double toSecInMovie)
{
_id = id;
_fileLocation = fileLocation;
_startSecInSrc = startSecInSrc;
_fromSecInMovie = fromSecInMovie;
_toSecInMovie = toSecInMovie;
_duration = toSecInMovie - fromSecInMovie;
} AudioFile::~AudioFile()
{
}
感谢。
答案 0 :(得分:-3)
可能会有更多的事情发生,但是为了创建一个新对象并保存它,你应该声明一个变量然后初始化它。使用 new 关键字。即AudioFile a = new AudioFile(...);在你的add_audio()函数中。
此外,您可以使您的功能稍微缩短(但风格可以决定您想要如何编写它):
audioList.push_back(new AudioFile(id, srcFile, startSecInSrc, fromSecInMovie, toSecInMovie));