Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
#1

Глобальный член класса - C++

22.04.2013, 21:13. Просмотров 438. Ответов 7
Метки нет (Все метки)

Пишу программу, в которой много классов, и каждый лежит в своем файле. Все работает. Но как только после определения класса я объявляю член этого класса, компилятор говорит, что этот объект определен в каждом файле, к которому я подключал исходный, с описанием класса. При чем я использую дерективы #ifndef для избежания повторного включения. Где мне правильно объявить член этого класса, что-бы его видели все (куда подключен файл с ним) файлы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 21:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Глобальный член класса (C++):

Член-ссылка на другой член класса - C++
Есть класс Dot с двумя членами - x и y. Требуется еще один класс, который хранит width i height, но реализация этого класса ничем не...

Член класса управляемый не может относиться к типу класса неуправляемый - C++
Подскажите пожалуйста, что за ошибка "Член класса управляемый не может относиться к типу класса неуправляемый"? #include <vector> ...

Реализовать подсчет количества объектов класса, используя статическую переменную-член класса - C++
как реализовать подсчет количества объектов класса (используя статическую переменную-член класса), а также статическую функцию, которая...

Массив объектов класса как член другого класса - C++
Здравствуйте. У меня тут возникла проблемка #include "main.h" class player { public: player(); player(char*); ...

Сам вопрос: почему функция-член одного класса не вызывается из функции-члена другого класса? - C++
//Щас всё объясню. Так, имеем два класса, в одном я определил функцию-член. Все конструкторы и прочее //опущены для уменьшения кода ...

Глобальный объект класса - C++
Добрый вечер всем!) Вообщем суть такая: пишу статическую библиотеку, которая состоит из кучи файлов. Есть класс, конструктор которого...

7
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.04.2013, 21:17 #2
Цитата Сообщение от Seroga7 Посмотреть сообщение
Глобальный член класса
если речь о статической переменной, то её надо прописать в срр-файле
0
Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
22.04.2013, 21:21  [ТС] #3
Переменная не static, обыкновенная. Пробовал прописать в срр, но ее не видно нигде вообще.
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,233
22.04.2013, 21:29 #4
Цитата Сообщение от Seroga7 Посмотреть сообщение
Но как только после определения класса я объявляю член этого класса,
Это как???
члены описываются при определении
как можно после?
или ты имеешь ввиду объект?
так глобальный объект (или тип) объявляется один раз

а чтобы видели другие надо добавлять слово extern
лучше это сделать в заголовочном файле

например так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// MyClass.h
class MyClass
{
public:
 MyClass();
int a;
};
extern MyClass myCl;
 
MyClass.c
#include "MyClass.h"
 MyClass::MyClass()
{
  a=5;
}
 
MyClass myCl;
и все модули к которым подключишь MyClass.h
будут видеть myCl
1
Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
22.04.2013, 21:41  [ТС] #5
Цитата Сообщение от ValeryS Посмотреть сообщение
или ты имеешь ввиду объект?
Да, я имел в виду объект

При использовании идентификатора extern появилась ошибка "неразрешенный внешний символ"

Его еще и в срр нужно добавить, вот в чем дело. Не заметил. Теперь вроде работает. Спасибо!
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
22.04.2013, 21:43 #6
Учи матчасть, extern - объявление, а не определение. К нему требуется cpp файл, в котором будет произведено объявление.
0
Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
22.04.2013, 21:48  [ТС] #7
Прошу прощение за терминологические ошибки, наверстаю упущенное)
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,233
22.04.2013, 21:52 #8
Цитата Сообщение от Seroga7 Посмотреть сообщение
При использовании идентификатора extern появилась ошибка "неразрешенный внешний символ"
правильно появилась
extern говорит компилятору "не дергайся где то она объявлена, пускай у линкера голова болит"
а вот когда линкер не находит определения
он и говорит " тут все ссылаются на какую то переменную, а я не знаю где её взять"
0
22.04.2013, 21:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2013, 21:52
Привет! Вот еще темы с ответами:

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

Член класса управляемый не может относиться к типу класса не управляемый - C++
"член класса управляемый не может относиться к типу класса не управляемый" Не могу понять что делать с этой ошибкой и как...

Не функция-член класса - C++
Фрагмент из книги, об дружественной функции operator<<: "Обратите внимание, что она не является функцией-членом класса String". Из чего...

Static член класса - C++
Всем привет! Подскажите, пожалуйста, почему так писать нельзя: В хедере объявляю статический метод: public: explicit...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.