Название: Вопрос по include Отправлено: catprog от Июль 03, 2009, 12:03 Есть "начальные"(GUI) mainwindow.h и mainwindow.cpp
И пусть есть класс MyControler описаный в файлах: mycontroler.h и mycontroler.cpp Про файл: Код: QT += network Как правильно надо писать, где и что, чтобы в файлах mainwindow.h и mainwindow.cpp можно было пользовать этот класс? Если я пишу например в файле mainwindow.h class MyControler; то это помогает только для файла mainwindow.h, хотя должно бы помочь и для mainwindow.cpp так как там есть строка include "mainwindow.h" ??? А если такую строку написать в обоих файлах говорит что два раза так писать нельзя ??? Название: Re: Вопрос по include Отправлено: Авварон от Июль 03, 2009, 12:11 напиши include "mycontroler.h" только в хедере
Название: Re: Вопрос по include Отправлено: catprog от Июль 03, 2009, 12:44 напиши include "mycontroler.h" только в хедере Спасибо. Работает. А как понять почему оно работает именно так, может можно гдето почитать доходчивую статью?Название: Re: Вопрос по include Отправлено: lit-uriy от Июль 03, 2009, 12:49 Запись:
class MyControler; Годится только для сообщения компилятору о том, что где-то(!) есть такая "штука". Но чтобы этой "штукой" воспользоваться нужно её заголовочник с полным описанием. Если ты объявляешь переменную (не указатель) типа MyControler, или используешь члены этого класса понадобится полное описание. Часто делают так, в mainwindow.h: class MyControler; в mainwindow.cpp: #include "mycontroler.h" Тогда в заголовочнике не будет лишнего, а mainwindow.cpp будет включено полное описание Название: Re: Вопрос по include Отправлено: Авварон от Июль 03, 2009, 12:49 это описание языка си. директива #incude просто включает текст указанного файла. надпись class A; говорит что далее будет объявлен класс А, но при описании этой строки про класс ничего не известно (инфа-то в хедере). По сему ты можешь объявлять только указатели на него.
Если ты включаешь #incude "a.h" в b.h и b.cpp, то он у тебя вставит текст 2 раза (1 раз из b.h и 2й из b.cpp). Способ этого избежать - закдючать текст хедера в "скобки" Код: #ifndef __A Название: Re: Вопрос по include Отправлено: catprog от Июль 03, 2009, 13:36 Благодарю, теперь более мене ясно.
Если я правильно понял то если у меня в проекте будет файл mycontroler.h, то если по коду не будет #include "mycontroler.h" этот файл даже не откомпилиться. И второе что понял - файлы *.cpp нигде не надо инклудить, они сами както инклудятся беспорядочным образом. Название: Re: Вопрос по include Отправлено: Авварон от Июль 03, 2009, 13:38 в мейк файле есть строка g++ -c file1.cpp -o file1.o на каждый файл .cpp (грубо говоря). И есть строка g++ file1.o ... fileN.o -o твоя_программа.exe
Название: Re: Вопрос по include Отправлено: Alex Custov от Июль 03, 2009, 23:33 И второе что понял - файлы *.cpp нигде не надо инклудить, они сами както инклудятся беспорядочным образом. Может стоит затариться литературой? ;) |