コード例では、 (テンプレートのインスタンス化で)map
型名が必要な場所の代わりに(変数の名前)を使用します。stack<map>
ただし、適切な型名を使用していても機能しません(この場合、typedefを使用する必要があります。たとえばtypedef char TwoDimCharArray[20][20]
、次のようにしてみてstd::stack<TwoDimCharArray>
ください。
配列にデフォルトのコンストラクターがないという問題がまだあります(これstd::stack
は期待しています)。したがって、std::stack
配列を直接含めることはできません。配列をクラスまたは構造体(デフォルトのコンストラクターを持つことができます)内にラップする必要があります。例:
class TwoDimCharArray
{
public:
// omit if there's nothing to initialize in map, then the
// compiler-generated constructor will be used
TwoDimCharArray()
{
// ... initalize map values
}
// ... provide access methods to map
private:
char map[20][20];
};
std::stack<TwoDimCharArray> soluciones;
またはBoost.Array
、C ++ 11std::array
のものを使用してください!これらが利用可能である場合、それらは間違いなくより良く、より簡単な選択です!