Структура, которая содержит массивы - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть deque, который содержит std :: arrays.

Я хочу преобразовать его в deque, который содержит структуры. Структура, которую я сделал, выглядит следующим образом:

struct New_Array {
array<array<int,4>,4> tablee;
int h;
} Jim;

И у меня есть deque с именем посещено:

deque<New_Array> visited;

У меня есть такая функция, которая печатает массив с именем PrintBoard.

    void PrintBoard(New_Array tt) {
        using namespace std;
        for (int iRow = 0; iRow < 4; ++iRow) {
            for (int iCol = 0; iCol < 4; ++iCol) {
                cout << tt.tablee[iRow][iCol];
                cout << "  ";//This space helps so the numbers can be visable 
            //to the user 
}
            cout << endl;
        }

}

Когда я пишу PrintBoard(visited.front());, это дает мне error C2664: 'PrintBoard cannot convert parameter 1 from 'New_Array' to std:tr1::array<_Ty,Size>'.

В чем проблема? Я никогда не использовал таблицы в качестве одномерного.

EDIT:

 #include <deque>
    #include <vector>
    #include <array>

    using namespace std;

    struct New_Array {
        array<array<int,4>,4> tablee;
        int h;
    }str_test,Jim;

    deque<New_Array> visited;

    void dfs()
    {
    PrintBoard(visited.front());//****the error is in this line****
    }

    void PrintBoard(New_Array tt) {
            using namespace std;
            for (int iRow = 0; iRow < 4; ++iRow) {
                for (int iCol = 0; iCol < 4; ++iCol) {
                    cout << tt.tablee[iRow][iCol];
                    cout << "  ";//This space helps so the numbers can be visable 
                //to the user 
            }
                cout << endl;
            }

            }

    int main() 
    {
        dfs();
        char test_char;
        cin>> test_char;
        return EXIT_SUCCESS;
    }

1 Ответ

1 голос
/ 03 апреля 2012

Объявление PrintBoard в вашем примере после того, как оно используется в dfs(). Если ваш код структурирован таким образом, у вас может быть другое объявление PrintBoard, которое принимает массив в качестве аргумента. Вполне вероятно, что у вас там есть старая декларация, которая добавляется вашими включениями.

Попробуйте переместить объявление PrintBoard перед его использованием.

...