2012-03-20 3 views
1

Я пытался выяснить, как добавить массив в структуры ... на структуру из Интс для примера будет выглядеть следующим образом:массив внутри структуры в C++

struct test{ 
    int a; 
    int b; 
    int c; 
} test = {0,1,2}; 

, но если я хочу иметь массив, например:

struct test{ 
    int a; 
    int b; 
    int c; 
    int deck[52]; 
} test; 

это выполнимый? инициализация колоды (карт) происходит в другой функции. когда я делаю это так, я не получаю сообщение об ошибке в struct, но я получаю, когда я пытаюсь использовать его ... например, если я сделаю это test.deck[i] = 1; это дает мне эту ошибку:

Error C2143 Syntax Error missing ';' before '.' 

если бы я использовал a, я мог бы написать test.a = 1;

Может ли кто-нибудь написать простую структуру, где переменная в ней является массивом, а затем просто использовать ее для простой команды?

+0

Пожалуйста, покажите полный пример неисправного кода. –

+5

Почему вы даете своей переменной тот же идентификатор, что и тип? – AusCBloke

+1

Да, это вполне выполнимо. Я не уверен, почему это вызывает проблемы для вас. Возможно, вы можете разместить больше кода. –

ответ

3

Ошибка:

Error C2143 Syntax Error missing ';' before '.'

обусловлена ​​test быть именем типа. Вы должны определить экземпляр:

int main() { 
    test mytest; 
    mytest.deck[1] = 1; 
    return 0; 
} 
+0

Это визуальная студия? Это отлично работает для меня здесь. –

+1

Он действительно создал экземпляр. Просто получилось то же имя, что и тип, который был глупым. –

2

Если это C++, C нет, не уронить тест после определения структуры.

Следующий код работает отлично.

#include <iostream> 

using namespace std; 

struct Test { 
    int a; 
    int b; 
    int c; 
    int deck[52]; 
}; 

int main (int argc, char* argv[]) 
{ 
    Test t; 
    t.deck[1] = 1; 
    cout << "t.deck[1]: "<< t.deck[1] << endl; 
    exit(0); 
} 

Проблема: В C, вы положили Теста после определение создать переменную с именем теста. Итак, в C, тест не a тип, это глобальная переменная , как вы ее написали.

компилируется:

#include <iostream> 

using namespace std; 

struct Test { 
    int a; 
    int b; 
    int c; 
    int deck[52]; 
} test; 

int main (int argc, char* argv[]) 
{ 
    test.deck[1] = 1; 
    cout << "test.deck[1]: "<< test.deck[1] << endl; 
    exit(0); 
} 
+0

Ваш второй пример - это именно то, что имеет OP в вопросе, не так ли? –

+0

ОП не опубликовал код, в котором он использует структуру. И это, я думаю, может быть неправильно. Он объявил, что прежде чем пытаться индексировать вектор? Ну, он попросил пример кода, который бы скомпилировал, я дал его ему. – Castilho

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