0

key[2*d]ここでは、 andを使用して構造体を作成しようとしていますptr[2*d+1]が、コンパイラは次のコード行のみでエラーを出しています:

「エラー: データ メンバーは可変的に変更された型を持っていない可能性があります。」

コードでのみ「d」を使用したい。今それを修正する方法。

#include<iostream>
using namespace std;
static int d=1;

struct Btree{
    public:
    int key[2*d];
    int count;
    Btree *ptr[2*d+1];
    Btree *pptr;
};
4

1 に答える 1

1

d const を作成してみてください。C++11 で constexpr を使用している場合、いつでも d を変更できない理由がないため、コンパイラが動揺します。T[N] をあなたが見るタイプとして扱います (これは最適化に役立ちます)。Btree がすべて同じではない可能性があるため、動揺します。

ところで、int テンプレート パラメータを Btree に追加することもできます。そうすれば (整数が constexpr であることを考えると) そのテンプレートからのすべてのものは同じになるので、それは満足しますが、それらを混在させることはできません (Btree< 1> と Btree<2> は、(テンプレートまたはその他の方法で) 明示的に両方を使用する関数を介して対話することはできません)

d が変更できる場合、ヒープ上にそれが本当に必要です。

于 2013-09-26T00:24:40.530 に答える