Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Новичкам

Важная информация

Новичкам Информация для всех новичков, новичкам рекомендуется задавать свои вопросы здесь

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.09.2012, 14:45   #1
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию ООП в с++

У меня в файле class1.cpp создан класс к примеру:
Код:
class ad
{
   переменные...;

public:
  void c(параметры какие то...);
}

ad::ad()
{
 какие-то действия...
}

void c(параметры какие то...)
{
  какие-то действия...
}
В файле main.cpp хочу присвоить этот класс переменной, т.е:
Код:
void main()
{
   ad g;
далее действия с переменной g
}
но компилятор выдает ошибку типа
Цитата:
Ошибка ad: необъявленный идентификатор
Где его объявлять то надо?
И еще вопрос: в коде мангоса я замечал такую конструкцию к примеру:
Код:
Master::Master()
{
}

Master::~Master()
{
}
Что значит ~?
__________________
sql-language.ru
lovepsone вне форума   Ответить с цитированием
Старый 28.09.2012, 15:12   #2
Evgeniy
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
Evgeniy На верном пути
По умолчанию

Цитата:
Сообщение от lovepsone Посмотреть сообщение
И еще вопрос: в коде мангоса я замечал такую конструкцию к примеру:
Код:
Master::Master()
{
}

Master::~Master()
{
}
Что значит ~?
Destructor
Evgeniy вне форума   Ответить с цитированием
Старый 28.09.2012, 15:43   #3
Amaru
MaNGOS Dev
 
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
Amaru На верном пути
По умолчанию

Цитата:
но компилятор выдает ошибку типа
#include "class1.cpp"

?
Amaru вне форума   Ответить с цитированием
Старый 28.09.2012, 15:59   #4
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

Если написать функцию в файле class1.cpp вне класса и вней создать такую переменную, то компилятор компилирует. А как создать эту переменную в в другом .cpp файле?




в файле class1.cpp
Цитата:
#include "class1.h"
и в файле main.cpp
Цитата:
#include class1.h
так ж в файле class1.h прописано
Код:
class ad;

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


p.s. пойду ка я пока покурю книгу...


почитав книгу нечего такого не нашел, как же все таки реализовать
Код:
ad g;
кое что надыбал в инете msdn.microsoft.com и проблему свою решил! Можете тему в корзину. Всем спасибо...
__________________
sql-language.ru

Последний раз редактировалось lovepsone; 28.09.2012 в 16:26.
lovepsone вне форума   Ответить с цитированием
Старый 28.09.2012, 16:47   #5
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Цитата:
Сообщение от lovepsone Посмотреть сообщение
Файлы .cpp нельзя инклудить, так как они не являются заглавными.
можно
zergtmn вне форума   Ответить с цитированием
Старый 28.09.2012, 17:20   #6
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от zergtmn Посмотреть сообщение
можно
но лучше так не делать без хорошей на то причины
LordJZ вне форума   Ответить с цитированием
Старый 28.09.2012, 19:02   #7
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

Цитата:
Сообщение от zergtmn Посмотреть сообщение
можно
в коде мангоса на сколько я знаю так никогда не инклудилось....
__________________
sql-language.ru
lovepsone вне форума   Ответить с цитированием
Старый 28.09.2012, 22:31   #8
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

Лучше будет описать класс ad в .h файле. И проблема сама решится с инклудом .cpp файла.
Den вне форума   Ответить с цитированием
Старый 29.09.2012, 00:08   #9
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от lovepsone Посмотреть сообщение
в коде мангоса на сколько я знаю так никогда не инклудилось....
Дело в том, что по конвенции (гласной или не гласной — я, правда, не знаю) *.c* (.c, .cc, .cp, .cpp, .cxx и другие) файлы служат точкой входа для очередного запуска компилятора, который инклудит заголовочные файлы, почти не содержащие символов, а на выходе отдает объектный файл с символами именно этого *.c* файла. Мангос более-менее следует этой конвенции.
Именно с таким подходом по-умолчанию работает gcc, под этот режим пишутся Makefile-ы, так Visual Studio с незапамятных времён автоматически выбирает дефолтные роли файлов в проекте.

Однако объединённые силы языка С (или С++) и компилятора позволят вам «выстрелить в ногу» — сделать всё по-своему и сказать, что компилировать ваш любимый компилятор будет один файл cc.entry, а в этом файле будут #include-ы всех остальных файлов проекта, какое бы они расширение ни имели.

Иногда такой подход имеет место быть. Безобидным примером использования является система быстрой компиляции, ускоряющая этот длительный процесс за счёт снижения количества чтения этих самых заголовочных файлов. Согласно методике, в одном-единственном на весь проект компилируемом файле содержатся #include-ы всех других файлов проекта, подлежащих компиляции на текущем языке программирования.

Достаточно хаковым, но, тем не менее, существующим методом «быстрой» статической линковки с отдельными символами библиотеки с открытым исходным кодом является #include *.c* файла библиотеки.

Но, опять же, я настоятельно рекомендую не прибегать к таким ухищрениям.
LordJZ вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 18:08. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot