今は私のライブラリの最初の部分に2つの最後の問題があります。 (私はconstexprのバージョンをしたい場合)と、最初のものはハックせずにC++でこの事は不可能である、それは派生クラスカウンターです:派生クラスの自動カウンタ/代替?
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;
なぜこのカウンターが必要ですか?まあ、別の配列に型とインデックスとして使用します。
は、私はそれを持つ2つの問題を抱えている:
Type
はconstexpr
ありませんが、この事は- not really possibleが、私は私の全体のソースファイルに貼り付ける必要があり、コードの行だけを持っているようですライブラリ
派生クラスがいくつあるか分かります(恐ろしいことではありませんが)。助けがあれば、何か良いことは分かりません。
クラスを追加することを意味する場合でも、の候補/代替候補が表示されます。少なくともint FooBase::Counter = 0;
行を削除することができれば、それはいいでしょう。
PS:C++の制限はありません。TSは歓迎します。
PSS:実際のケースはもう少し複雑でCRTPを使用していますが、問題ではないと思います。
この設定では、できません。私は何が間違っているかは分かりません。これは継承設定なので、子クラスは親クラスのカウンタを使用できます。または、ベクトルを使用してsize()を使用することができますfunctoin –
私はそれを使用することはできませんが、私は今やっていることを言ったことはありません。私はより明示的な方法で問題を解決します。 –
http://stackoverflow.com/a/8596825/1561291これはあなたが探している解決策かもしれません。 –