アプリケーションの GUI から変数の値を取得するクラス "A" があります。これらの変数の 1 つが「X」であるとしましょう。次に、別のクラス「B」で、これを「X」と呼び、その値を別の関数に渡したいと思います。
私がしたことは、クラス「B」で「objectA」と呼ばれるクラス「A」のオブジェクトを作成し、次のように「X」の値を呼び出したことです。
// class A:
void classA::function1(int gui_value){
x= gui_value;
}
次に、別のクラスで:
//class B:
void classB::run(){
.
.
function2(/* I need to pass x here */);
.
.
}
関数と x の両方がヘッダー ファイルで正しく定義されています。
私がしたことは、ヘッダーファイルにclassAのオブジェクト(objectAとしましょう)を作成し、次のように「objectA」を使用して「classB」の「function2」の「x」の値を呼び出すことです。
//class B:
void classB::run(){
.
.
function2(objectA->x);
.
.
}
「x」の値が「5」に等しいとしましょう。function2 で「x」の値をデバッグすると、デバッグするたびに乱数が返されます。したがって、これらのランダムな値が既にメモリに存在していると推測しているだけです。つまり、「X」の値が正しく渡されていません。
オブジェクトは作成されますが、変数「x」の新しいインスタンスが毎回作成されると思います。つまり、classA から「x」の値を取得するのではなく、すべての変数を使用して classA のオブジェクトを作成するだけです。
私の問題は、変数の新しいインスタンスを作成せずに、classA で取得した「x」の値を直接 classB に渡す方法です。
アップデート:
Doctorlove の回答のおかげで、私のコードは正常に動作するようになりました。私の問題は、作成後に「objectA」を初期化し、それに値を割り当てることにありました。私が行っていたのは、オブジェクトを作成して「classB」に直接渡すことです。そのため、作成時にメモリに値があったのは新しいオブジェクトであったため、ランダムな値を取得していました。