Это происходит с КАЖДЫМ классом, который я пытаюсь создать на C ++. При переходе с java проблемы возникают в основном при создании классов. Я запускаю valgrind и, похоже, он в конструкторе.
==30214== Memcheck, a memory error detector
==30214== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==30214== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==30214== Command: ./CoC
==30214==
==30214==
==30214== Process terminating with default action of signal 11 (SIGSEGV)
==30214== Bad permissions for mapped region at address 0x404B4F
==30214== at 0x4C2B9EC: strcat (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==30214== by 0x404220: Model::Model(std::string) (in /home/kronus/Apollo/CoC)
==30214== by 0x402617: main (in /home/kronus/Apollo/CoC)
Как видите, я пытаюсь вызвать конструктор этого класса модели в основной метод. Вот код конструктора
Model::Model(std::string filename)
{
m_TotalFaces = 0;
m_model = lib3ds_file_load(filename.c_str());
// If loading the model failed, we throw an exception
if(!m_model)
{
throw strcat("Unable to load ", filename.c_str());
}
}
Когда он вызывается, он закрывается с ошибкой сегментации. Важно: я объявил класс внутри файла заголовка. Это когда я получаю ошибку. Я помещаю класс в исходный файл, и он работает нормально. Что я делаю неправильно?