Size: a a a

2021 February 23

G

Gabriel in supapro.cxx
Побитый Кирпич
А в чем ты видишь тут проблему?
Так, тут вроде разобрался.
источник

AM

Aleksander Mironov in supapro.cxx
Ilia Zviagin
Что за fsm ?
конечный автомат, короче жирный свичкейз
источник

IZ

Ilia Zviagin in supapro.cxx
Aleksander Mironov
Вынос FSM из класса в отдельный friend класс, это хреновая затея или по ситуации\общемировая практика?
А зачем классу FSM ?
источник

G

Gabriel in supapro.cxx
У меня ещё есть вопрос насчёт классов и inline.
источник

IZ

Ilia Zviagin in supapro.cxx
Aleksander Mironov
Вынос FSM из класса в отдельный friend класс, это хреновая затея или по ситуации\общемировая практика?
В общем, по ситуации
источник

AM

Aleksander Mironov in supapro.cxx
Ilia Zviagin
А зачем классу FSM ?
класс представляет абстракцию сущности имеющую состояния
источник

IZ

Ilia Zviagin in supapro.cxx
Aleksander Mironov
Вынос FSM из класса в отдельный friend класс, это хреновая затея или по ситуации\общемировая практика?
Я бы не выносил пока железно не нужно
источник

IZ

Ilia Zviagin in supapro.cxx
Aleksander Mironov
класс представляет абстракцию сущности имеющую состояния
Тогда зачем из него это выносить, если это его сущность?
источник

AM

Aleksander Mironov in supapro.cxx
Ilia Zviagin
Тогда зачем из него это выносить, если это его сущность?
Жирно получается, хочу разбить, там еще поведение от состояния зависящее.
источник

IZ

Ilia Zviagin in supapro.cxx
ᏒAᎩ
MessageBox(nullptr, TEXT("Hello"), TEXT("Okay"), MB_OK | MB_CANCELTRYCONTINUE);

А как можно из подобного мессаджбокса обработать к примеру нажатие в нем какой-либо клавиши ?
Никак, напиши свой диалог аналогичный, и реагирую в нем как угодно на что угодно
источник

IZ

Ilia Zviagin in supapro.cxx
Aleksander Mironov
Жирно получается, хочу разбить, там еще поведение от состояния зависящее.
Жирно это как?
источник

G

Gabriel in supapro.cxx
Побитый Кирпич
header.h:

inline int foo() { return 42; }
int bar();

tu1.cpp:

#include <header.h>

int bar() { return foo() * 2; }

tu2.cpp:

#include <header.h>

int main() { return bar(); }
Хотя, тут не будет ошибки, мол в main вызывается bar из .h, которая не имеет определения?
источник

AM

Aleksander Mironov in supapro.cxx
Ilia Zviagin
Жирно это как?
В кол-ве кода в одном файле.
источник

ПК

Побитый Кирпич... in supapro.cxx
Gabriel
Хотя, тут не будет ошибки, мол в main вызывается bar из .h, которая не имеет определения?
bar определеная в tu1.cpp. Этот вызов будет разрешён компоновщиком
источник

IZ

Ilia Zviagin in supapro.cxx
Aleksander Mironov
В кол-ве кода в одном файле.
Разбей на два файла, не проблема. Файлы и классы никак не связаны, можешь хоть по одной функции в исходном файле писать
источник

AM

Aleksander Mironov in supapro.cxx
Ilia Zviagin
Разбей на два файла, не проблема. Файлы и классы никак не связаны, можешь хоть по одной функции в исходном файле писать
Я пытаюсь header-only все =) Сам себя в ловушку загнал.
Оно в принципе и прикольно, пока вот такие моменты не возникают =\
источник

AM

Aleksander Mironov in supapro.cxx
Думаю попытаюсь ее полностью в отдельный, не связанный класс вынести =\ Может получится, не получится - оставлю внутри. Ок, спс.
источник

IZ

Ilia Zviagin in supapro.cxx
Aleksander Mironov
Я пытаюсь header-only все =) Сам себя в ловушку загнал.
Оно в принципе и прикольно, пока вот такие моменты не возникают =\
Ок, по функции в одном хедер файле пиши...
источник

G

Gabriel in supapro.cxx
Побитый Кирпич
bar определеная в tu1.cpp. Этот вызов будет разрешён компоновщиком
Окей, тогда у меня остался неразрешённый вопрос насчёт классов.
Ну вот пример:

header.h:

class Example
{
int methodOfExample();
}

header.cpp

Exmaple::methodOfExample()
{
return 11;
}

tu1.cpp:

#include <header.h>

tu2.cpp:

#include <header.h>

void main()
{
Example ex;
ex.methodOfExample();
}



Тут ведь не нужно в header.cpp делать inline для methodOfExample. Ведь мы можем сделать #include <header.h> в разные TU и ошибки не будет?
источник

C

CodeDetector in supapro.cxx
Gabriel
Окей, тогда у меня остался неразрешённый вопрос насчёт классов.
Ну вот пример:

header.h:

class Example
{
int methodOfExample();
}

header.cpp

Exmaple::methodOfExample()
{
return 11;
}

tu1.cpp:

#include <header.h>

tu2.cpp:

#include <header.h>

void main()
{
Example ex;
ex.methodOfExample();
}



Тут ведь не нужно в header.cpp делать inline для methodOfExample. Ведь мы можем сделать #include <header.h> в разные TU и ошибки не будет?
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник