これは、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)
ご覧のとおり、このモデルクラスのコンストラクターをmainメソッドに呼び出そうとしています。コンストラクターのコードは次のとおりです
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());
}
}
呼び出されると、セグメンテーション違反で閉じます。重要:ヘッダーファイル内でクラスを宣言しました。これは私がエラーを受け取るときです。クラスをソースファイル内に配置すると、正常に実行されます。私は何が間違っているのですか?