2013-04-26 7 views
1

Я уже некоторое время работаю над этой проблемой. Я "м просто хотите передать значение в один символ из одного класса в другойГлобальные переменные в visual C++

В моем файле заголовка я переменная, объявленная:

extern char variable1; 

в class1.cpp я та же переменная объявлена:

char variable1 = 'N'; 

в class2.cpp я есть та же переменная объявлена: Я не инициализировать это из логики, требуемой для Y/N находится в class1.cpp

char variable1; 

Мое предположение о том, как это будет работать, заключается в том, что я бы прошел через логику, чтобы установить ее в Y или сохранить ее как N init initlied в классе1, как только функция будет закончена, я бы нажал кнопку на форме, чтобы пойти к следующему классу, и поскольку все они имеют одинаковое имя, а имя файла находится в файле заголовка с ключевым словом extern, оно будет передавать значения взад и вперед, не так ли? Я все еще новичок в визуальном C++, поэтому я просто пытаюсь учиться.

+0

Я думаю, нам нужно больше деталей, на самом деле не ясно – Nagasaki

+1

У вас нет ошибки сборки, когда вы снова объявили переменную в class2.cpp? Все, что вам нужно сделать, это включить заголовок в class2.cpp и определить переменную только один раз (что вы уже делаете в class1.cpp). – Mahesh

+0

Я не уверен, что еще вам нужно. Все, что я читал, это то, что вам нужно объявить переменную в файле заголовка как extern, а затем объявить файл снова во всех классах .cpp, которые вы планируете использовать в переменной. JUst смотрит, как фактически передавать данные, в настоящее время он не передает его между двумя классами – Criel

ответ

2

char variable1; без extern не декларации, это определения. Это означает, что вы определяют переменную как в class2.cpp, так и в class1.cpp, что является незаконным. Определите его только в одном файле .cpp. Другие .cpp-файлы должны затем #include заголовок, содержащий объявление, которое даст им доступ к переменной.

+0

Это была моя проблема. Мое понимание прохождения переменных было не совсем правильным, спасибо всем! – Criel

+0

@Criel Просто, чтобы уточнить - вы не * проезжаете * нигде. У вас просто есть глобальная переменная в вашей программе, и вы получаете доступ к ней из двух разных мест. Передача означает предоставление чего-то в качестве аргумента функции и, как правило, лучший дизайн, чем общее глобальное состояние. – Angew

0

Если вы объявите extern char variable1; в файле cpp класса 1 и определите char variable1; в классе2, вы сможете делать то, что хотите.

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