同じアプリケーションの2つのバージョンがあり、グラフィカルUIとQTを使用しているバージョンでは、ランタイムエラーが発生します。
first-chance exception access violation writing location
を参照して
this->secondi_totali = someint;
モデルメソッド内で起動されます。私のモデルクラスは次のとおりです。
class Model {
public:
friend class Controller; //dico che controller può accedere alle cose private
//friend class cronometro_qt;
/*costruttore*/
Model();
void set(int,int,int);
int get_secondi();
int get_minuti();
int get_ore();
void tick();
private:
int secondi_totali;
int secondi_trascorsi;
int secondi;
int minuti;
int ore;
};
例外の原因となる方法は次のとおりです。
void crono::Model::set(int ore, int minuti, int secondi) {
this->secondi_totali = ore * 3600 + 60 * minuti + secondi;
this->secondi_trascorsi = 0;
}
スタック内はこのメソッドから呼び出されます。
void crono::Controller::set(int ore, int minuti, int secondi) {
this->modello->set(ore, minuti, secondi);
}
this-> modelloは、明らかにControllerアイテム内のModelオブジェクトへのポインターです。
前にも言ったように、私は自分のプログラムの2つのバージョンを実行しました。
最初に、コントローラーのset()メソッドは、空のクラスであるビューの単純なメソッドによって呼び出されます。
2番目のバージョンでは、コントローラーのset()メソッドは
void crono::cronometro_qt::on_pushButton_clicked() { /* ... */ }
方法。
明らかに、どちらのバージョンでも、次のようにset()メソッドを呼び出すために、空のビューまたはcronometro_qt(QMainWindowのサブクラス)にコントローラーへのポインターがあります。
this->controller->set(ore,minuti, secondi);
では、なぜQTバージョンがその例外をスローするのでしょうか。