私はグラフィックオブジェクトmylineを持っています。彼はクラスMyLineItemから裸であり、QGraphicsLineItemからサブクラス化されています。qtの初期化されていないオブジェクトをチェックする方法
最初の初期化の前に、mylineが初期化されているかどうかを確認する必要があります。 (そうでなければ...何かを行う - それを初期化する)。しかし、何も私を形作ってくれません。あなたはどこに問題があるか知っていますか?私は2つのコンストラクタ持っHファイルで
:私のメインプログラムで
explicit MyLineItem(QGraphicsLineItem *parent = 0);
MyLineItem(const QLineF &line, QGraphicsItem *parent = 0)
は次のようなものです:
MyLineItem *myline;
if (myline != 0)
{
QLineF newLine = QLineF(myline->line().p1(), mouseEvent->scenePos());
myline->setLine(newLine);
update();
}
else
{
myline = new MyLineItem(QLineF(mouseEvent->scenePos(),mouseEvent->scenePos()));
}
問題は、まだのみ{}の場合に入るというプログラムです。しかし、初めて、コードの他の部分に入る必要があります。
私は同じものを試験した。 In partプログラムがクラッシュした場合。 Ofcourse ....なぜなら、オブジェクトのmylineは初期化されていないからです。
*関数内のローカル変数ですか?それはクラスメンバ変数ですか?そして、それを定義するときに*初期化するのはなぜですか? –
なぜ初期化しないのですか?:マウスが最初にクリックされた後に線が作成されるためです。 mylineは、プライベートメインクラス変数としてHファイルに定義されています。 – exo
しかし、if(myline!= NULL)からif(myline == NULL)に変更すると、プログラムはまだif {}ブロックだけに移動するのはなぜ分かりませんか? – exo