У меня есть класс, который содержит два частных int, один - const (m_id), а другой - static (next_id).Как я могу автоматически увеличивать каждый объект класса?
Я хочу установить m_id для next_id и увеличивать next_id каждый раз, когда я создаю объект класса.
Но так как это константный я не могу установить его так:
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: исправлены некоторые ошибки в коде из-за тестирования)
Что вы подразумеваете под «Я не могу получить доступ к частному статику»? Возможно, вам следует опубликовать полный пример кода. – Casey