Прямо сейчас у меня есть две последние проблемы с первой частью моей библиотеки. И первая одна эта вещь не возможно в C++ без взлома (если я хочу версию constexpr), это производный класс счетчик:Автоматический счетчик для производного класса/Альтернатива?
class FooBase {
protected:
static int Counter;
};
class Foo : public FooBase {
public:
static const int Type;
};
const int Foo::Type = ++FooBase::Counter;
struct FooTest : public Foo {};
Должно быть в исходном файле:
int FooBase::Counter = 0;
Зачем мне этот счетчик? Я использую его как тип и индекс в другой массив.
У меня есть две проблемы с этим:
Type
неconstexpr
, но эта вещь кажется not really possible- У меня есть только строки кода, которые должны быть введены в исходный файл моего целого библиотека
Я знаю, сколько производного класса существует (с макросом, который не является ужасным), если это может помочь, но я не имею ни малейшего представления о чем-то лучшем.
Даже если это означает добавить класс или что-то еще, я хотел бы видеть ваши предложения . Если вы можете хотя бы удалить линию int FooBase::Counter = 0;
, это будет хорошо.
PS: У меня нет ограничений на C++, TS приветствуются.
PSS: Настоящий случай немного сложнее и использует CRTP, я надеюсь, что это не будет проблемой.
С помощью этой настройки вы не можете. Я не понимаю, что с ним не так. Это настройка наследования, поэтому ваш дочерний класс может использовать счетчик из родительского класса. Или вы можете просто использовать векторы и использовать size() functoin –
Я никогда не говорил, что не могу его использовать, вот что я делаю прямо сейчас. Я поставил проблему более явным образом. –
http://stackoverflow.com/a/8596825/1561291 это может быть решение, которое вы ищете. –