|
Новичкам Информация для всех новичков, новичкам рекомендуется задавать свои вопросы здесь |
|
Опции темы | Поиск в этой теме | Опции просмотра |
28.09.2012, 14:45 | #1 | |
Ученый
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
|
ООП в с++
У меня в файле class1.cpp создан класс к примеру:
Код:
class ad { переменные...; public: void c(параметры какие то...); } ad::ad() { какие-то действия... } void c(параметры какие то...) { какие-то действия... } Код:
void main() { ad g; далее действия с переменной g } Цитата:
И еще вопрос: в коде мангоса я замечал такую конструкцию к примеру: Код:
Master::Master() { } Master::~Master() { }
__________________
sql-language.ru |
|
28.09.2012, 15:12 | #2 |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
|
28.09.2012, 15:43 | #3 | |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Цитата:
? |
|
28.09.2012, 15:59 | #4 | ||
Ученый
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
|
Если написать функцию в файле class1.cpp вне класса и вней создать такую переменную, то компилятор компилирует. А как создать эту переменную в в другом .cpp файле?
в файле class1.cpp Цитата:
Цитата:
Код:
class ad; так что тут все правильно походу. Файлы .cpp нельзя инклудить, так как они не являются заглавными. p.s. пойду ка я пока покурю книгу... почитав книгу нечего такого не нашел, как же все таки реализовать Код:
ad g;
__________________
sql-language.ru Последний раз редактировалось lovepsone; 28.09.2012 в 16:26. |
||
28.09.2012, 16:47 | #5 |
MaNGOS Dev
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
|
|
28.09.2012, 17:20 | #6 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
|
28.09.2012, 19:02 | #7 |
Ученый
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
|
__________________
sql-language.ru |
28.09.2012, 22:31 | #8 |
Ученый
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
|
Лучше будет описать класс ad в .h файле. И проблема сама решится с инклудом .cpp файла.
|
29.09.2012, 00:08 | #9 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Дело в том, что по конвенции (гласной или не гласной — я, правда, не знаю) *.c* (.c, .cc, .cp, .cpp, .cxx и другие) файлы служат точкой входа для очередного запуска компилятора, который инклудит заголовочные файлы, почти не содержащие символов, а на выходе отдает объектный файл с символами именно этого *.c* файла. Мангос более-менее следует этой конвенции.
Именно с таким подходом по-умолчанию работает gcc, под этот режим пишутся Makefile-ы, так Visual Studio с незапамятных времён автоматически выбирает дефолтные роли файлов в проекте. Однако объединённые силы языка С (или С++) и компилятора позволят вам «выстрелить в ногу» — сделать всё по-своему и сказать, что компилировать ваш любимый компилятор будет один файл cc.entry, а в этом файле будут #include-ы всех остальных файлов проекта, какое бы они расширение ни имели. Иногда такой подход имеет место быть. Безобидным примером использования является система быстрой компиляции, ускоряющая этот длительный процесс за счёт снижения количества чтения этих самых заголовочных файлов. Согласно методике, в одном-единственном на весь проект компилируемом файле содержатся #include-ы всех других файлов проекта, подлежащих компиляции на текущем языке программирования. Достаточно хаковым, но, тем не менее, существующим методом «быстрой» статической линковки с отдельными символами библиотеки с открытым исходным кодом является #include *.c* файла библиотеки. Но, опять же, я настоятельно рекомендую не прибегать к таким ухищрениям. |