1

C++ を使用してメモリ マップド ハードウェアのドライバーを開発しており、このデバイスを表すクラスを定義しました。次のようになります。

class device
{
method1();
method2();

private:
device_register reg1;
device_register reg2;

}

このクラスには、device.cpp と device.h の 2 つのファイルがあります。メンバー変数は、デバイス自体の実際のレジスタを表します。デバイス自体の実際のレジスタではないメンバーをさらに定義したいのですが、クラス内で定義することはできません。そうすると、デバイスのメモリマップされた場所で定義され、他のデバイス/レジスタが含まれる可能性があるためです。 . それらをパブリックとして定義すると、標準のレイアウトが壊れ、クラスが機能しなくなります。

だから私がしたことは、それらをクラス定義の外でグローバル変数として定義したことです。問題は、複数のオブジェクトを定義すると、それらはすべてこれらのグローバル変数を共有することですが、各オブジェクトに独自の変数を持たせたいのですが、どうすればよいですか?

4

2 に答える 2