2012-04-03 4 views
0

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

Я хочу преобразовать его в 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; 
    } 
+2

Можете ли вы сформировать это в один блок кода, который мы можем попытаться скомпилировать (т. Е. [SSCCE] (http://sscce.org))? Я поставил код в файл и написал main(), и он компилирует для меня w/gcc – je4d

+0

Какая строка является ошибкой, и где это в вашем примере? – ssube

+0

@ je4d см. Мои изменения –

ответ

1

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

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

+0

Проблема заключалась в том, что я объявила PrintBoard следующим образом: 'void PrintBoard (массив , 4> tt)'. Правильный - это 'void PrintBoard (New_Array tt)' –

Смежные вопросы