Возникли проблемы с доступом к структуре

0

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

Изображение 174551

Ошибка: в этом объявлении нет класса хранилища или спецификатора типа

Ошибка: ожидается ";"

  • 6
    Вы не можете иметь выражения (например, ga = 1; ) вне функций.
  • 1
    Также удалите typedef впереди и Game после закрывающей скобки объявления структуры.
Показать ещё 5 комментариев
Теги:
visual-c++
visual-studio-2012

3 ответа

1
Лучший ответ

На глобальном уровне вы можете иметь только объявления и определения, а не выражения (например, ga = 1; is) или выражения.

0

У некоторых функций есть исполняемый оператор, например,

Game Init() {
    Game result;
    result.a = 1; // g is global
    return result;
}

Game g = Init();

Еще лучше иметь класс под названием "Игра" и иметь конструктор для инициализации.

class Game {
  int a;
  public:  
  Game(int a_):a(a_){}
};

Game g(1);
  • 0
    Хорошо, допустим, я использую C и хочу, чтобы объявление было публичным. Есть ли способ, которым я могу достичь этого? Я знаю, что это может звучать глупо, поскольку вы сказали бы, что вообще не используете struct ... Кроме того, имейте в виду, что я не знаю тип данных a.
  • 0
    В C все общедоступно в структуре, нет понятия личных данных, однако для инициализации вам необходимо знать тип данных, Game g = {1}; сделал бы тоже
0

Также почему бы не использовать статическую инициализацию?

Game g = { 1 };

Ещё вопросы

Сообщество Overcoder
Наверх
Меню