2 つのプライベート int を含むクラスがあります。1 つは const (m_id) で、もう 1 つは static (next_id) です。
m_id を next_id に設定し、クラスのオブジェクトを作成するたびに next_id をインクリメントしたいと考えています。
しかし、それはconstなので、そのように設定することはできません:
Class::Class()
{
m_id = next_id++;
}
そのように設定する必要があります
Class::Class() :m_id(next_id)
{
next_id++;
}
しかし、そのようなプライベート静的にアクセスできないため、それも良くありません。
const はそのために使用することを意図していないので、単純に削除すると誰かが私に言いました。それが本当に唯一の解決策ですか?
編集:ここに完全なヘッダーとソース
ヘッダ
#ifndef ENTITY_H_LEA12OED
#define ENTITY_H_LEA12OED
#include "EntityKey.h"
#include "ComponentManager.h"
class Entity
{
public:
Entity ();
virtual ~Entity ();
private:
ekey m_key;
ComponentManager m_componentManager;
const int m_id;
static int next_id;
};
#endif /* end of include guard: ENTITY_H_LEA12OED */
ソース
#include "Entity.h"
Entity::Entity() :m_id(next_id++)
{
}
Entity::~Entity()
{
}
(もちろん EntityKey と ComponentManager は私の質問とは何の関係もありません)
(編集2:テストによるコードのいくつかのエラーを修正しました)