私は次の問題を抱えています(OOPスタイルのC ++を学ぶだけです):3つのクラスがあります:
- アプリ
- objectManager
- 物体
appクラスは起動変数を設定し、objectManagerのインスタンスを作成します。これは、objectManagerに、さまざまなファイルから値をロードし、各オブジェクトに必要なデータをベクトルで事前計算するように指示します。
私の問題は次のとおりです。各オブジェクトにアクセス可能な事前計算されたベクトルを使用したいと思います。オブジェクトからこの変数にアクセスする方法がわかりません。オブジェクトはマネージャーのインスタンスについてまったく何も知らないからです。
シングルトンについて読んだことがありますが、どのように実装すればよいかわかりません。
静的データメンバーについて読んだことがありますが、AFAIKではまだobjectManagerインスタンスに接続する必要があるようですので、役に立ちません。
グローバル変数を試しましたが(わかっています...)、コンパイルエラーが発生しました。
objectManager.hのクラス定義の外に静的変数を配置しようとしましたが(グローバルな場合ですか?)、奇妙なことになりました。objectManager.hを含むプログラムのすべての部分から変数にアクセスできます。 、ただし、その値はクラスごとに異なります/初期化されていません。
objectManager.h
#pragma once
#include "Object.h"
static int xxxtest;
class objectManager
{
objectManager.cpp
xxxtest = 123456;
cout << xxxtest << endl;
-> 123456
object.cppまたはapp.cpp(後)にいる間
cout << xxxtest << endl;
-> 0
ここで何が起こっているのか説明してもらえますか?
事前に計算された変数をプログラムの他の部分にアクセスできるようにしながら、そのようなプログラムを整理するためのシンプルでクリーンな方法を私に勧めてもらえますか?