Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Где найти программиста? В сервисе Фриланс!
Alexander Fedosov
6534
Alexander Fedosov 2015.04.09 22:51 

Есть класс:

class Cl 
  {
private:
   int               Func3(Value3);
public:
   int               Func1(Value1);
   int               Func2(Value2); 
   };
//---
int Cl::Func1(int Value1) 
  {
   ......
   Func3();
  }
//---
int Cl::Func2(int Value2) 
  {
   ......
   Func3();
  }
 //---
int Cl::Func3(int Value3) 
  {
   .......
  }
Он имеет 3 функции, причем в теле первой и второй используется третья. Как поступить - внести в первые 2 код третьей и тогда они не будут зависеть от других, станут самодостаточными. Или оставить так. Тогда создавая какой-то новый класс и если брать func1 придется тащить и func3.
Dennis Kirichenko
10789
Dennis Kirichenko 2015.04.09 22:58  
А в чём, собс-но, проблема? Имхо, пока идёт перелив из пустого в порожнее...
Alexander Fedosov
6534
Alexander Fedosov 2015.04.09 23:03  
denkir:
А в чём, собс-но, проблема? Имхо, пока идёт перелив из пустого в порожнее...

Проблема в том, что если я создаю какой-то новый класс с определенным выборочным набором функций из старого класса, то мне приходиться волочить за собой кучу дополнительных функций, которые исполняются в выбранными мной.

Создал новый класс Cl_1, забрал из CL функцию Func1(), но она не будет работать без Func3(). Приходиться и ее тащить. Я стремлюсь, чтобы каждая функция была самодостаточна и минимальна зависела от других. Вот и как это лучше всего реализовать?

Andrey Miguzov
1983
Andrey Miguzov 2015.04.09 23:19  
Alex2356:

Проблема в том, что если я создаю какой-то новый класс с определенным выборочным набором функций из старого класса, то мне приходиться волочить за собой кучу дополнительных функций, которые исполняются в выбранными мной.

Создал новый класс Cl_1, забрал из CL функцию Func1(), но она не будет работать без Func3(). Приходиться и ее тащить. Я стремлюсь, чтобы каждая функция была самодостаточна и минимальна зависела от других. Вот и как это лучше всего реализовать?

Прочитайте про наследование. Вообще не придется ничего "переносить".
Vasiliy Sokolov
20297
Vasiliy Sokolov 2015.04.09 23:23  
Alex2356:

Есть класс:

...Тогда создавая какой-то новый класс и если брать func1 придется тащить и func3. 

Вы не должны ничего "тащить". Вместо этого, Вы должны "включать" классы целиком в новый проект.
Alexey Volchanskiy
15208
Alexey Volchanskiy 2015.04.10 02:30  
Alex2356:

Проблема в том, что если я создаю какой-то новый класс с определенным выборочным набором функций из старого класса, то мне приходиться волочить за собой кучу дополнительных функций, которые исполняются в выбранными мной.

Создал новый класс Cl_1, забрал из CL функцию Func1(), но она не будет работать без Func3(). Приходиться и ее тащить. Я стремлюсь, чтобы каждая функция была самодостаточна и минимальна зависела от других. Вот и как это лучше всего реализовать?

Цитата "если я создаю какой-то новый класс с определенным выборочным набором функций из старого класса,"

Все из класса-родителя будет наследоваться, нет никакой "выборочности"

Dmitry Fedoseev
41698
Dmitry Fedoseev 2015.04.10 08:40  
Alex2356:

Проблема в том, что если я создаю какой-то новый класс с определенным выборочным набором функций из старого класса, то мне приходиться волочить за собой кучу дополнительных функций, которые исполняются в выбранными мной.

Создал новый класс Cl_1, забрал из CL функцию Func1(), но она не будет работать без Func3(). Приходиться и ее тащить. Я стремлюсь, чтобы каждая функция была самодостаточна и минимальна зависела от других. Вот и как это лучше всего реализовать?

Можно сделать еще один класс с набором полезных, часто используемых функций (здесь - с функцией 3), потом в других классах использовать его.

Другой вариант - использовать наследование. Сделать родительский класс, в нем общие часто используемые функции и виртуальные функции, код которых будет  в классах наследниках.

Alexander Fedosov
6534
Alexander Fedosov 2015.04.10 08:56  
Всем спасибо за предложения.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий