1

列数が固定された文字列テーブルをオブジェクトとするクラスを作成したいと考えています。列数はオブジェクトの有効期間中固定されるため、std::arrayコンテナーから各行オブジェクトを宣言することにしました。

以下のコードは、このようなクラスを作成するための私の試みです。

class Table
{
    public:
        Table(size_t ColumnCount)   // LINE 45
        {
            // The constant 'N' in the template definitions
            // will be equal to the 'ColumnCount' parameter.
        }
        template <uint64_t N>
        void AddRow(const std::array<std::wstring, N> & NewRow)
        {
            Rows.push_back(NewRow);
        }
    private:
        template <uint64_t N>       // LINE 55
        std::list<std::array<std::wstring, N>> Rows;
};

Table mytable(5);   // Create a table with 5 columns

エラーが表示されます (Visual Studio 2012 の場合):

Line 55: error C3857: 'Table::Rows': multiple template parameter lists are not allowed
Line 45: error C2512: 'std::list<std::array<std::wstring,N>>' : no appropriate default constructor available

このコードを実行することは可能ですか?

4

1 に答える 1