0

いくつかの演算子がオーバーロードされたこの構造体の配列があります

struct xyz
{
  int x; float y;
};

std::vector<xyz> a1,a2,a3;

これを次のように使用すると

a1 [ a2 [ i ] ] = a3 [ i ]

//by this I mean

//a1 [ a2 [ i ].x ].x = a3 [ i ].x
//a1 [ a2 [ i ].x ].y = a3 [ i ].y

このエラー「\OCL6D24.tmp.cl」が表示されます。行 236: エラー: 式には整数型または列挙型が必要です

これを OpenCL カーネルで使用しています。しかし、この問題は通常の C++ プログラムに似ています。これを解決するにはどうすればよいですか?

更新: 特に OpenCL カーネルのような状況では、私が必要としていたことが可能だとは思いません。しかし、私は私の問題を解決しました。設計ミスでした。

4

2 に答える 2

1

これを行うには、ある種の連想コンテナを使用する必要があります。たとえば、std::mapまたはstd::unordered_map(on C++11)。std::vector整数型を使用したインデックス作成のみをサポートします(エラーが言うように)。

于 2013-02-14T09:41:08.290 に答える