Russian Qt Forum

Qt => Вопросы новичков => Тема начата: smilik от Май 18, 2016, 17:03



Название: Где и как определить функцию для использования ее в разных классах одного проект
Отправлено: smilik от Май 18, 2016, 17:03
Добрый день!!! Требуется функция, которая будет использоваться в разных классах одного проекта. Как ее реализовать, чтобы в каждом классе не определять одну и туже функцию.


Название: Re: Где и как определить функцию для использования ее в разных классах одного проект
Отправлено: gil9red от Май 18, 2016, 17:08
  • Если классы имеют общего предка, то реализовать функцию в базовом
  • В отдельном h/cpp файле реализовать и инклудить в нужных местах


Название: Re: Где и как определить функцию для использования ее в разных классах одного проект
Отправлено: kai666_73 от Май 18, 2016, 17:44
Третий вариант - создать класс с необходимой функцией и микшировать его во все классы где эта ф-я необходима.


Название: Re: Где и как определить функцию для использования ее в разных классах одного проект
Отправлено: smilik от Май 19, 2016, 09:38
Спасибо за ответы!!! Я просто читаю, что есть вариант объявить и реализовать эту функцию в одном классе, а в другом классе объявить с припиской extern и можно ее использовать. Но у меня не получается так


Название: Re: Где и как определить функцию для использования ее в разных классах одного проект
Отправлено: kambala от Май 19, 2016, 11:48
через extern это должна быть функция вне класса. если хочешь, чтобы она была в классе, это будет static метод.
Код
C++ (Qt)
// f.h
extern void f();
 
// f.cpp
void f() {}
 
// main.cpp
#include "f.h"
 
int main() {
   f();
   return 0;
}


Название: Re: Где и как определить функцию для использования ее в разных классах одного проект
Отправлено: smilik от Май 19, 2016, 13:32
все, спасибо, получилось !!!  :)


Название: Re: Где и как определить функцию для использования ее в разных классах одного проект
Отправлено: Igors от Май 19, 2016, 15:35
Вообще-то (при)писка extern для ф-ции не нужна, был бы прототип. И вопрос радует: сначала осваиваем классы, потом все остальное  :)


Название: Re: Где и как определить функцию для использования ее в разных классах одного проект
Отправлено: Alex Custov от Май 19, 2016, 15:49
Вообще-то (при)писка extern для ф-ции не нужна, был бы прототип. И вопрос радует: сначала осваиваем классы, потом все остальное  :)

Ну классика - "выучу по ходу".


Название: Re: Где и как определить функцию для использования ее в разных классах одного проект
Отправлено: kambala от Май 19, 2016, 15:51
Вообще-то (при)писка extern для ф-ции не нужна, был бы прототип.
точно, это ж только для переменных надо


Название: Re: Где и как определить функцию для использования ее в разных классах одного проект
Отправлено: smilik от Май 19, 2016, 16:18
у меня немножко другая ситуация

Код
C++ (Qt)
// f.h
void f();
// f.cpp
void f() {}
 
// g.h
extern void f();
// g.cpp
f();
 

Раньше просто не было необходимости это использовать :)
Ну или видимо так:
Код
C++ (Qt)
// f.h
void f();
// f.cpp
void f() {}
 
// g.cpp
#include "f.h"
f();