Russian Qt Forum
Ноябрь 25, 2024, 07:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы с вызовом функции из другого класса  (Прочитано 2697 раз)
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"

Зарание спасибо! Очень надеюсь на вашу помощь!!!
« Последнее редактирование: Октябрь 12, 2010, 09:40 от MuLLIKA » Записан
shirushizo
Гость
« Ответ #1 : Октябрь 12, 2010, 08:49 »

#include <graphitemclass.h> - на этапе предкомпиляции текст файла graphitemclass.h будет добавлен в это место.

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

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #2 : Октябрь 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();
}
 
Записан

Гугль в помощь
MuLLIKA
Гость
« Ответ #3 : Октябрь 12, 2010, 14:01 »

Спасибо!=)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.083 секунд. Запросов: 22.