-1
列挙型を書き換えるときに、代入演算子の中にSIGSEGVが得られます。
私のstruct:列挙型を書き換えるときのSIGSEGV
struct Pawn
{
private:
Q_GADGET
public:
Q_PROPERTY(Position position MEMBER m_position)
Q_PROPERTY(PawnType pawnType MEMBER m_pawnType)
Pawn() : m_position(Position::NotDefined), m_pawnType(PawnType::None) {}
Pawn(const Pawn &a_other)
{
this->m_pawnType = a_other.m_pawnType;
this->m_position = a_other.m_position;
}
Pawn &operator=(const Pawn &a_other)
{
this->m_pawnType = a_other.m_pawnType;
this->m_position = a_other.m_position;
return *this;
}
~Pawn(){}
enum Position
{
NotDefined = 0,
Bottom,
Left,
Top,
Right
};
enum PawnType
{
None = 0,
Circle,
Square,
Diamond,
Triangle,
};
Q_ENUMS(Position)
Q_ENUMS(PawnType)
Position m_position;
PawnType m_pawnType;
};
typedef Pawn::PawnType PawnType;
typedef Pawn::Position Position;
Q_DECLARE_METATYPE(Pawn)
Q_DECLARE_METATYPE(Pawn::Position)
Q_DECLARE_METATYPE(Pawn::PawnType)
行原因エラー:m_board
の
m_board[a_pawnPosition.y()][a_pawnPosition.x()] = m_board[current.y()][current.x()];
m_board[current.y()][current.x()] = Pawn();
Definiton:
Pawn m_board[10][10];
a_pawnPosition
とcurrent
は境界内にある
それは必ずしも起こるとは限りません。私はQ_PROPERTYがそれを引き起こしていると思いますが、QMLから値を読み込む必要があり、それを修正する方法がわかりません。
スタックトレースを取得するとよいでしょう。 – MrEricSir
'current.y()'と 'a_pawnPosition.y()'はどのような値になりますか?おそらく、それらのメソッドの値を返す前にアサーションを挿入したいと思うかもしれません。 (または、あなたがそれが境界内にあると言ったときにこれを意味しましたか?) –
'a_pawnPosition'と' current'とクラッシュに至る+ +コードが宣言されたメインプログラムMCVEを投稿してください... – jpo38