классы

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Гуру, помогите, плиз.

Учусь писать библиотеки. Хочу внутри класса создать метод типа "структура"


 struct stru
 {
   int a;
   int b;
   bool c;
}

 class CL
{
  public:
  stru metod1();
  private:
  protected:
}

 Как правильно это сделать. Структура будет использоваться не только для данного класса.

Спасибо.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Я не гуру, но вроде не правильно.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Строки 6 и 14 должны заканчиваться на ;

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы точно уверены, что хотите это делать? Вы знаете как правильно выделить память под такую структуру, как проинициализировать её, как потом освободить и т.п.? Это не так просто. Даже если Ваш код заработает, он может транжирить память и выдавать прочие подобные фокусы. Если Вы только начинаете работу с классами, то мможет Вам лучше передавать Вашему методу ссылку на готовую структуру, а в методе просто заполнять её?

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Andy пишет:

Строки 6 и 14 должны заканчиваться на ;

Принимается. Но не существенно.

ЕвгенийП пишет:

Вы точно уверены, что хотите это делать? Вы знаете как правильно выделить память под такую структуру, как проинициализировать её, как потом освободить и т.п.? Это не так просто. Даже если Ваш код заработает, он может транжирить память и выдавать прочие подобные фокусы. Если Вы только начинаете работу с классами, то мможет Вам лучше передавать Вашему методу ссылку на готовую структуру, а в методе просто заполнять её?

Я пытаюсь упорядочить (структуировать) свой уже готовый проект, где в общей куче все это работает, но читабильность (переносимость, портируемость) кода никакая. Памяти у меня до и больше (esp8266).

Чтобы было больше конкретики попробуйте оформить в класс пример с датчиком DHT11/21 с методами init  и get_data, причем get_data должен возвращать сразу и влажность и температуру.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Сколько бы ни было памяти, если ее неправильно расходовать, то она все равно кончится.

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

kisoft пишет:
Сколько бы ни было памяти, если ее неправильно расходовать, то она все равно кончится.

Проект готовый(рабочий) и проводится его модернизация (оптимизация) памяти должно хватить

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

pilnikov пишет:

попробуйте оформить в класс пример с датчиком DHT11/21 с методами init  и get_data, причем get_data должен возвращать сразу и влажность и температуру.

Не хочу :)

Но, если бы мне нужно было возвращать сразу и влажность и температуру, я бы возвращал один int (в самом крайнем случае long), но никак не на лету созданную структуру.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

pilnikov пишет:
причем get_data должен возвращать сразу и влажность и температуру.
Чем не устраивает передача в метод get_data указателей на переменные humidity и temperature, или на структуру с этими переменными...?

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Andy пишет:

pilnikov пишет:
причем get_data должен возвращать сразу и влажность и температуру.
Чем не устраивает передача в метод get_data указателей на переменные humidity и temperature, или на структуру с этими переменными...?

Это не совсем по фэншую так делать. Вот если бы параметры структуры были бы проходными - тогда да. А тут они чисто выходные.
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А создавать объект в функции и возвращать его по фэншую?

Ну, тогда делайте.

Logik
Offline
Зарегистрирован: 05.08.2014

Гуру огорчены этой темой. Гуру считают что обявить класс с структурой можна так


 struct stru
 {
   int a;
   int b;
   bool c;
};
 class CL
{
  public:

stru metod1;
  private:
  protected:
};

Или даже так.

 class CL
{
  public:
 struct stru
 {
   int a;
   int b;
   bool c;
};
stru metod1;
  private:
  protected:
};

Но гуру сильно опечалены рассуждениями о выделении и освобождении памяти. Они не видят таких проблем при наличии структуры в классе.

Еще Гуру хотят напомнить, что класс и библиотека - разные вещи. Возможен класс в скетче и библиотека без класса. Потому ТС зря выбрал сложный путь освоения двух новых сущностей сразу.

Возвращать из функции и передавать в нее указатели по феншую. А выделять память  на том же уровне, где и освобождать. Поле данных класса особого смысла передавать  в его методы параметром и возвращать не имеет.

 

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Logik пишет:

Гуру огорчены этой темой. Гуру считают что обявить класс с структурой можна так

 struct stru
 {
   int a;
   int b;
   bool c;
};
 class CL
{
  public:

stru metod1;
  private:
  protected:
};

Или даже так.

 class CL
{
  public:
 struct stru
 {
   int a;
   int b;
   bool c;
};
stru metod1;
  private:
  protected:
};

Но гуру сильно опечалены рассуждениями о выделении и освобождении памяти. Они не видят таких проблем при наличии структуры в классе.

Еще Гуру хотят напомнить, что класс и библиотека - разные вещи. Возможен класс в скетче и библиотека без класса. Потому ТС зря выбрал сложный путь освоения двух новых сущностей сразу.

Возвращать из функции и передавать в нее указатели по феншую. А выделять память  на том же уровне, где и освобождать. Поле данных класса особого смысла передавать  в его методы параметром и возвращать не имеет.

 

Не один из описываемыз методов не подходит. Патамушта 

pilnikov пишет:

Структура будет использоваться не только для данного класса.

Я в курсе, что можно и без классов, но "Хочу и псе тут! (с классами)"

Имхуется мне, что структура как тип данных памяти особо не занимает. Компилятор определяет размер структуры в байтах и сравнивает потом на соответствие типов внутри структуры (когда начинаешь работать с методом который имеет тип этой структуры). А память выделяется под экзэмпляр типа "структура" или под экзэмпляр же класса. (Это мое имхо)

Я порешал так:

 
 typedef struct
  {
    int a;
    int b;
    bool c;
  } stru;

  class CL
   {  
     public:
      stru metod1;
     private:
     protected:
   };

На этом вопросы по теме считаю исчерпанными.

Есть не по теме.

Как (и где) правильно объявить экземпляр внешнего класса, используемый методом

Например так:

DHT_Unified dht(DHT_PIN, DHTTYPE); // <-- Куда это вставлять??
..
..
..
..
// method1
void CL::dht_init()
{
  dht.begin(); // <-- используется тут
..
..

 

//method2
void CL::dht_read()
{
  dht.temperature().getEvent(&event); // <-- и еще тут
..
..

 

Logik
Offline
Зарегистрирован: 05.08.2014

///Имхуется мне, что структура как тип данных памяти особо не занимает. 

Почти да. Иногда выравнивание немного добавляет.

///Структура будет использоваться не только для данного класса.

Так она паблик! пользуйте на здорове везде где хочется, хоть тип, хот экземпляр.

///Как (и где) правильно объявить экземпляр внешнего класса, используемый методом

Все необходимое для работы класса логично создавать в конструкторе класа. Но это очень не догма. Если надо в любом методе - не беда, но приделить особое внимание освобождению и утечкам памяти. Например деструктор должен озаботится что там насоздавалось по ходу жизни класса и поудалять все. Но вобщето злоупотреблять ООП для МК не стоит, оно не оправдывается.

 

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Logik пишет:

Например деструктор должен озаботится что там насоздавалось по ходу жизни класса и поудалять все. Но вобщето злоупотреблять ООП для МК не стоит, оно не оправдывается.

Вот как раз с надеждой на деструктор все и пишется. Метод раз вызвал -> данные поимел -> и забыл как страшный сон (почистил все нафиг). 

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

А мк тоже всякие бывают (2мб оперативы тоже уже реальность;)

Logik
Offline
Зарегистрирован: 05.08.2014

pilnikov пишет:

Logik пишет:

Например деструктор должен озаботится что там насоздавалось по ходу жизни класса и поудалять все. Но вобщето злоупотреблять ООП для МК не стоит, оно не оправдывается.

Вот как раз с надеждой на деструктор все и пишется. Метод раз вызвал -> данные поимел -> и забыл как страшный сон (почистил все нафиг). 

А ежели дважды метод вызвал - все пропало? ;)

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Ушёл за попкорном.

Logik
Offline
Зарегистрирован: 05.08.2014

pilnikov пишет:

А мк тоже всякие бывают (2мб оперативы тоже уже реальность;)

Хоть 22Мб. Основная задача - работа с железом, его состав постоянный, следовательно динамически чего создавать нет смысла. И следом безсмысленным становится весь подход. 

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Logik пишет:

pilnikov пишет:

А мк тоже всякие бывают (2мб оперативы тоже уже реальность;)

Хоть 22Мб. Основная задача - работа с железом, его состав постоянный, следовательно динамически чего создавать нет смысла. И следом безсмысленным становится весь подход. 

Это тоже не всегда так. К примеру есть у вас метеостанция на мк. В моем случае девайс могет работать с рядом датчиков, несколькими дисплеями, а также пользовать (или нет) некоторые сетевые сервисы. Т.е функционал и состав железа это нифига не const.

А еще мне стало нехватать ног, и я тупо (в прямом смысле походу) решил сменить мк. 

Вот тут то и началось веселье на которое у kisoft ни какого попкорна не хватит

Logik
Offline
Зарегистрирован: 05.08.2014

// К примеру есть у вас метеостанция на мк. 

Нету. И нефиг на меня наговаривать.

// моем случае девайс могет работать с рядом датчиков, несколькими дисплеями

Значить выделяйте по максимуму. А воще сферического коня в вакууме нече обсуждать. Проект в студию, тогда поржем. 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

pilnikov пишет:

Это тоже не всегда так. К примеру есть у вас метеостанция на мк. В моем случае девайс могет работать с рядом датчиков, несколькими дисплеями, а также пользовать (или нет) некоторые сетевые сервисы. Т.е функционал и состав железа это нифига не const.

А еще мне стало нехватать ног, и я тупо (в прямом смысле походу) решил сменить мк. \

Самое удивительное, что дополнительные ноги можно подключить через канал поддерживающий цепочку  74HC595 , или другого железа. Вот ради ног менять МК не имеет смысла. А вот манеру программирования менять тяжко. 

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

qwone пишет:

pilnikov пишет:

Это тоже не всегда так. К примеру есть у вас метеостанция на мк. В моем случае девайс могет работать с рядом датчиков, несколькими дисплеями, а также пользовать (или нет) некоторые сетевые сервисы. Т.е функционал и состав железа это нифига не const.

А еще мне стало нехватать ног, и я тупо (в прямом смысле походу) решил сменить мк. \

Самое удивительное, что дополнительные ноги можно подключить через канал поддерживающий цепочку  74HC595 , или другого железа. Вот ради ног менять МК не имеет смысла. А вот манеру программирования менять тяжко. 

 

Схему в студию. Как подкючить  microSD и допустим MAX7219 к одним и тем же ногам? 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

pilnikov пишет:

у kisoft ни какого попкорна не хватит

Вы недооцениваете запасы попкорна уважаемого коллеги.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

pilnikov пишет:
Схему в студию. Как подкючить  microSD и допустим MAX7219 к одним и тем же ногам?

Да в легкую  74HC595 к Ардуине, А ваши microSD и  MAX7219 на выход.

/*Wire_74HC595.ino 
*/
const int Latch_pin = 3;
const int CLK_pin  = 4;
const int Data_pin = 2;
const int max_device = 4;
bool stat = 0;
#include "Out_74HC595.h"
Out_74HC595 Out(Latch_pin, CLK_pin, Data_pin, max_device);
#include "Cl_led.h"
Cl_led led[] = {
  Cl_led(&Out, 0, 1, 0),  // шина-Out,1 горит,1-я 74HC595,D0
  Cl_led(&Out, 0, 1, 1),  // шина-Out,1 горит,1-я 74HC595,D1
  Cl_led(&Out, 0, 1, 2),  // шина-Out,1 горит,1-я 74HC595,D2
  Cl_led(&Out, 0, 1, 3)   // шина-Out,1 горит,1-я 74HC595,D3
};
void setup() {
  Out.setup();
  for (byte i = 0; i < 4; i++)  led[i].setup();
  led[0].blink(100);
  led[1].blink(150);
  led[2].blink(500);
  led[3].blink(1000);
}

void loop() {
  for (byte i = 0; i < 4; i++)  led[i].loop();
}

Скетч https://yadi.sk/d/WaW7iUgj3GPUvp

Но вам придется написать свою библиотеку под microSD и  MAX7219 работающие под такой канал, и да работать будет медленее. что для microSD и  MAX7219 не сильно критично. Опять же зачем MAX7219 подключать через 74HC595 , если можно их обьединить в единый канал.

Logik
Offline
Зарегистрирован: 05.08.2014

//Как подкючить  microSD и допустим MAX7219

)))действительно, как два SPI поцепить на одну шину.

//Но вам придется написать свою библиотеку

просто форум библиотекарей! Уже любой пук в либу оформляют. Потому и либки под ардуины такого "ароматного" качества.

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Logik пишет:

//Как подкючить  microSD и допустим MAX7219

)))действительно, как два SPI поцепить на одну шину.

//Но вам придется написать свою библиотеку

просто форум библиотекарей! Уже любой пук в либу оформляют. Потому и либки под ардуины такого "ароматного" качества.

++

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Logik пишет:
просто форум библиотекарей! Уже любой пук в либу оформляют. Потому и либки под ардуины такого "ароматного" качества.

 

Разумеется. Зачем писать одно и тоже в каждой новой программе, когда можно код заимствовать. Вот только библиотека в Ардуине бедная , можно сказать самиздат. Поэтому и качество "литературы" херовое.  О своей "литературе" ничего сказать не могу, так как раз в пол года меняется концепция. И с точки зрения новой концепции "старый" мой код становится "устаревшим". А новая концепция немного не доработана. Конечно хотелось бы найти "взрослый" учебник для программирования под Ардуиной. Но кроме "старого" и "нового" заветов ничего путного нет. 

Logik
Offline
Зарегистрирован: 05.08.2014

 когда можно код заимствовать... раз в пол года меняется концепция

[/quote]

Противоречие, однако;)

Написать код, обеспечивающий функционал для конкретного проекта в много раз проще чем либу с некоторой универсальностю, тем более концептуально вывереную. А тем более отладить эту либу во всех её возможностях.А слепленая кое-как по одному проекту либка с этим проектом и умрет. Нефиг даже и старатся, только время убивается. Это пагубная практика.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Logik пишет:

Противоречие, однако;)

Написать код, обеспечивающий функционал для конкретного проекта в много раз проще чем либу с некоторой универсальностю, тем более концептуально вывереную. А тем более отладить эту либу во всех её возможностях.А слепленая кое-как по одному проекту либка с этим проектом и умрет. Нефиг даже и старатся, только время убивается. Это пагубная практика.

Во во. Пагубная практика учится. Все равно забудешь, или узнаешь , что много чего не знаешь. Лучше открыть новую тему и Орать помогите новичку.

ПС: Я узнал просто очень много нового и под неожиданым углом. Вот из-за этого у меняется стиль . Написание библиотек навека , позволяет много раз шлифовать код. И да научился пользоваться Ctrl+F  в неожиданых ситуациях.

Logik
Offline
Зарегистрирован: 05.08.2014

qwone пишет:

Во во. Пагубная практика учится. 

Учится не пагубно, пагубно посреди процесса фиксировать состояние в коде и осчастливливать мир новой либой. В если найдут? Либу в смысле;) Оч неудобная ситуация получится, вам начнут расказывать как она плоха, а вы уже и сами это знаете, научились ведь еще чемуто. За подробностями к Архату, он этот путь боли потоптал прилично))) 

qwone пишет:

Я узнал просто очень много нового и под неожиданым углом. Вот из-за этого у меняется стиль . 

Это естественно и не безобразно.

qwone пишет:
 Написание библиотек навека , позволяет много раз шлифовать код.

Угу. И либы тоже шлифовать. И старые проекты которые перестают собиратся тоже доковыривать, а потом тестить. Процесс великолепен, но длителен. Результат не очень. Прежде всего по затратам времени.

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

 А про повторное использование - ну вот захотелось мне снова шишек набить на  74HC595 (это не абстрактный пример, реально платку сегодня разводил). Так и шо, Вы думаете я провереный код из старого взял? Нет конечно, ровно 5 строк вывода байта заново насочинял. Работает на соплях уже. Так быстрей в целом, учитывая что в старом проекте вывод был напрямую в порт а в новом ESP и так быстро работает (и ХЗ где и как его порты вобще). А что MAX7219  много сложней?! Нет конечно. А уж комбинаторика MAX7219+SD и прочие варианты в либки пихать - нет в том смысла . Ну не получается код разбить на кубики-либы на все случаи жизни.

qwone пишет:
И да научился пользоваться Ctrl+F  в неожиданых ситуациях.
Ну этим надо владеть вне зависимости от либ.  Ctrl+C   Ctrl+V   Ctrl+F - основные этапы разработки )))

 
Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

1429926570-1ca93d5ed5b8149d8c22f2b721c24

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Самое сложное в либах... это комментарии , правильно составленные комментарии . Пишу комментарии на русском, так как это мой естественный язык для понимания. Язык то естесвенный, но термины , точнее правильное понимание терминов не очень. Приходится 100 раз писать, что бы окончательно понять, как правильно называть и применять их.

Опять же название переменных и методов. Ну здесь надо точно писать на английском. И правильное понимание английских терминов. Ведь в конечном счете что такое либа. Это система названий переменных и методов библиотеки. Так что можно пользоваться хоть новой, только что написаной, хоть старой в пыли завалявшейся , но английские названия переменных и методов должны совпадать. Ради этого и переписываются библиотеки. Для ну очень воинственных критиков написание свой библиотеки это изучение технического языка и терминов для программирования. Своего рода тест на знание анлийского языка как в написании , так и понимании. 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

qwone пишет:

Самое сложное в либах...

кому это, кроме тебя, интересно?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Клапауций 112 пишет:

кому это, кроме тебя, интересно?

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

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

qwone пишет:

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

зачем ты это сюда пишешь? *попытка ответить на конкретный вопрос № 2

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

А кто нибудь помнит как тема называется? И какие вопросы в ней задавал ТС?

Qwone - чтоб подтвердить свое умение - конкретная задачка - сверните в класс пример для датчика DHT (Adafruint unifed sensor + DHT.h). С методами init и get_data.

Шоб на входе у init были пин подключения и тип, а у get_data на выходе h и t (округленые до uint8_t и int8_t),  могете? Или тока языком филосовствовать?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

pilnikov пишет:

Qwone - чтоб подтвердить свое умение - конкретная задачка - сверните в класс ...

pilnikov пишет:

Чтобы было больше конкретики попробуйте оформить в класс пример ....

Мне одному кажется, что этот парень - экзаменатор и пришёл у нас зачёт принимать?
pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

От вас то точно один оффтоп

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вот скажите это остальным старожилам!

А то я просил присвоить мне звание "заслуженный флудераст", а они продинамили :(

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

pilnikov пишет:

А кто нибудь помнит как тема называется? И какие вопросы в ней задавал ТС?

Все помнят, кроме самого ТС. Ему (ТС) разные люди уже задолбались писать одно и тоже чуть разными словами:

Logik пишет:

выделять память  на том же уровне, где и освобождать. 

ЕвгенийП пишет:

Вы знаете как правильно выделить память под такую структуру, как проинициализировать её, как потом освободить и т.п.? Это не так просто.

kisoft пишет:

Сколько бы ни было памяти, если ее неправильно расходовать, то она все равно кончится.

Andy пишет:

Чем не устраивает передача в метод get_data указателей ...  на структуру с этими переменными...?

Но у ТС не хватает квалификации понять, что это одно и тоже, что это и есть ответ на его главный вопрос, и что это говоряится опытными людьми по делу.

Зато у ТС хватает апломба со всеми спорить и всем что-то доказывать, в то время как сам не может написать описание метода, чтобы он хотя бы компилировался нормально.

Боюсь, что это тот самый случай, когда медицина бессильна и ТС не помочь. Разве что одумается и поможет себе сам.

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

ТС уже написал и ответил.  

//Чем не устраивает передача в метод get_data указателей ...  на структуру с этими переменными...? 

Это не по фэншую. По фэншую это когда есть входные (проходные) и выходныне переменные, а передача указателя - это как GOTO <LABEL> Такая конструкция как раз и путает все карты, потому как данные изменяются внутри структуры неявно.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

В тот-то и есть твоя проблема, что ты "итак всё знаешь лучше тех, к кому обращаешься".

Вот написали тебе люди "на одном уровне", "это не так просто". Если бы ты спросил "что это значит?", "почему не просто?", "чем плохо на разных уровнях?", "какова техника работы в такой ситуации?", тебе бы ответили и ты бы это уже знал. Заодно знал бы как правильно работать с памятью в разных ситуациях.

Ты же предпочёл, имея нулевые знания, со всеми спорить и всем что-то доказывать. И что ты доказал? То, что ничего не знаешь? В итоге выставил себя клоуном и народ уже начал посмеиваться и "запасаться попкорном".

Самоутвердился? Показал, что типа "не тварь дрожащая, а право имеешь". Молодец! Продолжай также. Многому научишься.

Logik
Offline
Зарегистрирован: 05.08.2014

pilnikov пишет:

Это не по фэншую. По фэншую это когда есть входные (проходные) и выходныне переменные, а передача указателя - это как GOTO <LABEL> Такая конструкция как раз и путает все карты, потому как данные изменяются внутри структуры неявно.

Совершенно нет. Передача указателя совершенно нормальное, и как правило оч полезное, дело хотя здесь и не нужное. Передавать в метод класса данные из этого же класа - бред какойто. Вы ж спецом инкапсулируете данные и методы в один клас, чтоб не ганять данные как параметры, а иметь к ним прямой доступ. На самом деле, он будет через скрытый параметр, но то Вам покак не важно.

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Ворота пишет:

В тот-то и есть твоя проблема, что ты "итак всё знаешь лучше тех, к кому обращаешься".

"Тыкать" - плохой тон. Мы с вами даже не знакомы. На момент постановки вопроса я действительно плохо представлял как это сделать.

По поводу "почему не просто?", "чем плохо на разных уровнях?", "какова техника работы в такой ситуации?" я не спрашивал. И не вам решать как мне писАть.

Был задан конкретный вопрос, на который ни один из участников темы не дал конкретный ответ. Большинство сказало что так делать не правильно и сложно. А некоторые пришли просто пофлудить, поглумиться (поржать) над новичками. Хотя у самих за плечами пусто. 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Конкретные ответы были, только ты их не понял в силу недостаточных знаний. А вместо того, чтобы задавать вопросы, начал спорить, а потом и хамить

Да, Боже упаси, конечно не мне решать что и как тебе пиасть. Также и то, что ты как не знал ничего перед началом темы, так и сейчас не знаешь - тоже вовсе не моя проблема. Тебе жить.

Хотел подсказать тебе как себя вести, чтобы от форума получать знания, а не глумление. Напрасно.  Ты и в поведениии на форуме, также как в классах, всё знаешь лучше всех и в советах не нуждаешься.

Пока! Будь здоров и весел!

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

pilnikov пишет:

Был задан конкретный вопрос, на который ни один из участников темы не дал конкретный ответ.

ок.

pilnikov пишет:

Хочу внутри класса создать метод типа "структура"

Структура будет использоваться не только для данного класса.

вопрос не конкретный, а странный:
во-первых: я не запрещал создавать внутри класса что-либо.
во-вторых: я не запрещал делать методы класса публичными.
pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Клапауций 112 пишет:

pilnikov пишет:

Был задан конкретный вопрос, на который ни один из участников темы не дал конкретный ответ.

ок.

pilnikov пишет:

Хочу внутри класса создать метод типа "структура"

Структура будет использоваться не только для данного класса.

вопрос не конкретный, а странный:
во-первых: я не запрещал создавать внутри класса что-либо.
во-вторых: я не запрещал делать методы класса публичными.

На этот вопрос ответ получен. Тема по этому вопросу закрыта.

pilnikov пишет:

Я порешал так:

 
 typedef struct
  {
    int a;
    int b;
    bool c;
  } stru;

  class CL
   {  
     public:
      stru metod1;
     private:
     protected:
   };

На этом вопросы по теме считаю исчерпанными.

Это работает /метод metod1 внутри класса CL c типом "структура" stru/

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

pilnikov пишет:

Это не по фэншую. По фэншую это когда есть входные (проходные) и выходныне переменные, а передача указателя - это как GOTO <LABEL> Такая конструкция как раз и путает все карты, потому как данные изменяются внутри структуры неявно.

Странный у Вас феншуй какой-то...

Если указатель - это не по феншую, объясните, почему есть масса языков программирования, где передача возможна только по адресу и нет ни одного, где передача по адресу была бы невозможна.

 

PS. Скажите, а Вас не возмущает, почему программисты строем не ходят?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:

PS. Скажите, а Вас не возмущает, почему программисты строем не ходят?

Иногда ходят - https://www.vedomosti.ru/politics/news/2015/11/19/617525-shoigu-programmistov

Logik
Offline
Зарегистрирован: 05.08.2014

)) Кстати новости то уж болььше года. Чем оно закончилось, хоть взвод тестировщиков набрали?

ПС. "Это ты на гражданке сеньером был, а здесь, душара, будеш в коде сержанта отступы выравнивать!" ))))