2015-08-31 2 views
0

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

int X = (0); 
int Y = (0); 
COORD coord; 
coord.X = X; 
coord.Y = Y; 

Они были объявлены до основной, так как они должны быть глобально доступной для других функций в рамках моей программы, но я получаю сообщение об ошибке при попытке установить коорд. X/Y, заявив, что декларация не имеет типа хранения. Что я могу сделать, чтобы исправить это?

+1

Итак, все 5 строк, показанных здесь, находятся за пределами основной (или любой другой функции)? Это просто неправильно. Только третья строка может быть снаружи. – deviantfan

+2

К сожалению, вы использовали слова для описания битов кода, которые вы удаляете. Не могли бы вы показать больше контекста? Является ли _ALL_ этот код, опубликованный вами в глобальной области? Это объяснит это. Также возможно, что 'COORD' объявлен вперед и еще не определен – paddy

+1

@deviantfan На самом деле первые три. – immibis

ответ

2
int X = (0); 
int Y = (0); 
COORD coord; 

Это определения глобальных переменных, вместе с инициализацией от некоторых буквенных значений для первых двух.

coord.X = X; 
coord.Y = Y; 

Это заявления.

У вас не может быть операторов вне какой-либо функции, их нужно поместить в какую-то функцию, например, например. main.

Но инициализирует поля члены экземпляра класса, как COORD вы обычно используете конструктор этого класса:

struct COORD { 
    int x; 
    int y; 
    COORD(int x, int y) 
    : x(x), y(y) { 
    } 
}; 

COORD p = COORD (21, 42); 

Но в этом случае вы даже не понадобился бы конструктор вообще, вы может использовать структурную инициализацию:

struct COORD { 
    int x; 
    int y; 
}; 
COORD q = {42, 21}; 
COORD p{21, 42}; // universal construction 

Но, наконец, я очень сомневаюсь, что вам действительно нужна глобальная переменная. Вероятно, вы должны проверить свой общий дизайн. (Хотя все вышесказанное не связано с тем, используете ли вы его для инициализации глобальной или локальной или переменной-члена)

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