staticメンバ変数を継承して利用する
Posted: 2011年3月15日(火) 13:23
件名のとおりstaticメンバ変数を継承して利用するときで、確認したいです
とあるとき Loop関数で g_mvTask[0] で SetValueを使って CSystem::m_iValue の値を変更したとき
g_mvTask[1].m_iValue
g_mvTask[2].m_iValue
g_mvTask[3].m_iValue
g_mvTask[4].m_iValue
の値も全部変更になるんですが、これでよかったでしょうか?
確認はしたのですが、偶然だったら怖いのでこれで合っているかどうかを聞きたいです
使い方としては タスク1、タスク2、タスク3、タスク4、タスク5 で同じ変数を共有、使用したいのです
class CSystem
{
protected:
static int m_iValue;
public:
int GetValue() { return m_iValue; }
void SetValue( int v ) { m_iValue = v; }
};
class CTask : public CSystem
{
char m_szName[1024]; // タスクの名前
int g_iNumber; // タスクの番号
public:
CTask( char *name );
~CTask();
void Draw( int x, int y );
};
vector<CTask*> g_mvTask;
//==================================================================
// 初期化
void Init()
{
CTask *task;
task = new CTask( "タスク1" );
g_mvTask.push_back( task );
task = new CTask( "タスク2" );
g_mvTask.push_back( task );
task = new CTask( "タスク3" );
g_mvTask.push_back( task );
task = new CTask( "タスク4" );
g_mvTask.push_back( task );
task = new CTask( "タスク5" );
g_mvTask.push_back( task );
}
void Loop()
{
g_mvTask.at(0)->SetValue( rand()%255 );
}
g_mvTask[1].m_iValue
g_mvTask[2].m_iValue
g_mvTask[3].m_iValue
g_mvTask[4].m_iValue
の値も全部変更になるんですが、これでよかったでしょうか?
確認はしたのですが、偶然だったら怖いのでこれで合っているかどうかを聞きたいです
使い方としては タスク1、タスク2、タスク3、タスク4、タスク5 で同じ変数を共有、使用したいのです