構造体をパラメータとする関数を使用しようとしています。リストの長さがパラメータとしてのC++構造体
この例では、構造体は固定サイズのリスト/ベクター(どちらが正しいかわかりません)を定義しています。
using namespace std
struct sample {
float d[64];
};
int main(int argc, char* argv[]) {
// Some stuff is made
vector<sample> result;
vector<double> ts;
if (double timest = the_function(result, ts)){
cout << timest << endl;
}
return 0;
}
しかし、私は選ぶことができ、リストのサイズNと同じ機能を使用します。
私は私がサイズを選択できるようにするために、構造体にパラメータを追加しようとしました:、私は例のように、それを使用
template <int T>
struct channels {
float d[T];
};
をし、それを使用する:
const int n = function_count();
// function_count is a function from a class that return an int
vector<channels<n> > result;
vector<double> ts;
しかし、私
エラー: 'n'の値は定数式では使用できません
私は
const int n = 64;
を使用しようとしました、それが働いていたので、私はfunction_countが違いを作ると思いますが、function_countはちょうどint型を返します。
他の種類の構造体を使用する必要がありますか?関数で定義されたパラメータで使用できる構造体を作成するにはどうすればよいですか?
EDIT
は、私は、これらの二つの機能を作っていなかったので、function_count
とthe_function
を変更せずに解決策を見つけたいです。
私はコンパイルの作品、result
を宣言するだけで、ベクターを使用しようとしましたが、それはそれを使用しようとすると、私はエラーを持っている:std::vector
のGot an exception: An argument was incorrectly specified.
なぜ 'std :: vector'を使うのではなく、独自の奇妙なテンプレートコンテナクラスを定義していますか? – tadman
短いテンプレートではコンパイル時に機能し、 'function_count'は実行時に実行されます。 'function_count'を' constexpr'してみるか、 'int T'を' std :: vector'のような実行時変数にしてみてください。 – nwp