Russian Qt Forum

Qt => Общие вопросы => Тема начата: MuLLIKA от Октябрь 12, 2010, 03:02



Название: Проблемы с вызовом функции из другого класса
Отправлено: MuLLIKA от Октябрь 12, 2010, 03:02
Всем здрасти!

у меня есть 2 класса:

class graphitemclass : public QGraphicsPolygonItem
class lineclass : public QGraphicsLineItem

в class lineclass подключен h-файл "graphitemclass.h", а в class graphitemclass  написанно перед описанием фнкций class lineclass;
Когда я делаю:
lineclass *lc;
lc->func();

то компилятор выдает мне ошибку, где говорит что я не правильно использую структуру "struct lineclass"
и пишет forwar declaration  "struct lineclass" ссылаясь на запись class lineclass в graphitemclass.h

Объясните в чем разница записей class lineclass и #include"lineclass.h"

Зарание спасибо! Очень надеюсь на вашу помощь!!!


Название: Re: ПРоблемы с вызовом йункции из другого класса
Отправлено: shirushizo от Октябрь 12, 2010, 08:49
#include <graphitemclass.h> - на этапе предкомпиляции текст файла graphitemclass.h будет добавлен в это место.

class lineclass; - определение класса, его обычно пишут чтобы само описане класса можно было написать после кода, которые его вызывает.


Название: Re: Проблемы с вызовом функции из другого класса
Отправлено: navrocky от Октябрь 12, 2010, 11:13
Если в хедере используется только указатель на класс то его можно объявить как class used_class; не подключая его хедер, тем самым уменьшив количество зависимостей и снизив время компиляции. Но для использования методов этого класса в cpp необходимо все-таки подключить хедер.

Типичный пример:

my_class.h
Код
C++ (Qt)
class other_class;
 
class my_class
{
public:
   void action();
private:
   other_class* other_;
};
 

my_class.cpp
Код
C++ (Qt)
#include "other_class.h"
#include "my_class.h"
 
void my_class::action()
{
   other_->do_something();
}
 


Название: Re: Проблемы с вызовом функции из другого класса
Отправлено: MuLLIKA от Октябрь 12, 2010, 14:01
Спасибо!=)