Loading...
+ Нов въпрос
bonev_st avatar bonev_st 12 Точки

Github repository

Здравейте,

Тук

https://github.com/bonev-st/AppDevCpp2021

съм качил нещата които сме правили до момента, ако на някой му е интересно :).

Естесвено кода не съвсем същия като Живко.

Тагове:
3
C++ Applications Development
j.petrov_90 avatar j.petrov_90 372 Точки

Здравей, колега,

Адмирации за добрата работа.
Забелязвам С background с добавка модерен C++ twist :)
Познах ли?

Харесва ми, че си усвоил знанията и си ги приложил от твоята гледна точка.
Допада ми и факта, че си wrap-нал Surface/Textures's в smart pointer-и.
Доста се чудех по този въпрос докато разработвах курса, но реших да не задълбавам в тази насока.
И без това смятам, че първите занятия имаха стръмен learning curve за хора с по-малко опит.
Смарт пойнтърите щяха да им дойдат в повече.

Няколко неща, които забелязах и искам да изкоментирам:
1) Няма нужда на пишеш конструктори и десктруктури = default, когато нямаш други упоменати такива.
Това си е излишен boilerplate. Компилаторът ще ги генерира за теб.
Даже бих казал, че е "лошо", защото default generated dctor е маркиран като noexcept.

2) Не е нужно да правиш typedef на структури.

typedef struct _Texture_t {
    std::shared_ptr<SDL_Texture> m_Texture;
    int32_t m_W;
    int32_t m_H;
} Texture_t;

Може да бъде просто:

struct Texture_t {
    std::shared_ptr<SDL_Texture> m_Texture;
    int32_t m_W;
    int32_t m_H;
};


3) Готина имплементация на NoCopy.hpp

class NoCopy {
	NoCopy(const NoCopy &) = delete;
	NoCopy(NoCopy &&) = delete;
	NoCopy operator = (const NoCopy &) = delete;
	NoCopy operator = (NoCopy &&) = delete;
public:
	NoCopy() = default;
    ~NoCopy() = default;
};

Точно за нещо подобно си говорих с един колега онзи ден.

Нещото, което ми прави впечатление е, че същината (copy & move) ctor/assignment operators са ти private.
Реално това е the C++98 way. Той също е верен, но не вади толкова смислен compiler error.
По-добре е да ги оставиш публични за да може да влезе в роля ключовата дума delete, която ще даде по-описателна грешка.

Поздрави

1
17/10/2021 13:47:19
bonev_st avatar bonev_st 12 Точки

Благодаря за коментарите.

 От доста годи работя като "deep embedded" (малки контроллери с по няколко КБ рам и ром, baremetal или с RTOS) програмист, от начало на асблер после на C, a през последните години пиша предимно на C++.

1
j.petrov_90 avatar j.petrov_90 372 Точки

Разбрах аз :)
В момента, в който видях двойно отрицание върху побитова маска всичко беше ясно :)

Продължавай в същия дух.
Само напред и нагоре.

1
Smeshan avatar Smeshan 89 Точки

Здравейте,
за какво служи NoCopy.hpp?
И кога е редно да е .hpp, а не .h :?

Поздрави

0
bonev_st avatar bonev_st 12 Точки

Качих работеща версия на SDL_CD_Kaleidoscope, малко е грозен кода но нещо мига :).

Алгоритъма на Kaleidoscope, който използвам е базиран на код от преди 45 години за демо на "цветна видео карта" на Cromemco's Dazzler от Li-Chen Wang

2
18/10/2021 20:47:46
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.