私はこのコードを持っています:
class USerializer {
public:
template<typename T>
static std::string serialize(std::list<T*> listOfObjectToSerialize)
{
// stringstream containing serialized Objects
std::stringstream serializedObjectList;
typename std::list<T*>::iterator iter;
// serialize Objects
for (iter = listOfObjectToSerialize.begin(); iter != listOfObjectToSerialize.end(); ++iter)
{
// Class delimiter
serializedObjectList << '+'<< endl;
// Need to serialise the class itself, and not the pointer to it!
serializedObjectList << **iter;
}
return serializedObjectList.str();
}
}
そして、私はこのような方法を使用します:
std::string serializedAlarmInfo = USerializer::serialize<CcAlarm::AlarmInfo>(getActiveAlarms());
SIGILL障害が発生しています:
Program received signal SIGILL, Illegal instruction.
gdbを使用して実行をトレースしましたが、シリアル化関数を終了するまではすべて問題ないようです。
何か案は?