- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
void Canvas::drawText(const char* text, SDL_Color sdlColor, int x, int y) const noexcept
{
if (!font)
throw std::runtime_error{"TTF_Font* is null"};
SDL_Surface* const sdlSurface =
::TTF_RenderText_Solid(const_cast<TTF_Font*>(font->getTtfFont()), text, sdlColor);
if (!sdlSurface)
throw std::runtime_error{"SDL_Surface* is null"};
SDL_Texture* const sdlTexture =
::SDL_CreateTextureFromSurface(const_cast<SDL_Renderer*>(renderer->getSdlRenderer()), sdlSurface);
if (!sdlTexture)
throw std::runtime_error{"SDL_Texture* is null"};
const SDL_Rect srcrect{0, 0, sdlSurface->w, sdlSurface->h};
const SDL_Rect dstrect{x, y, sdlSurface->w, sdlSurface->h};
::SDL_FreeSurface(sdlSurface);
::SDL_RenderCopy(const_cast<SDL_Renderer*>(renderer->getSdlRenderer()), sdlTexture,
&srcrect, &dstrect);
::SDL_DestroyTexture(sdlTexture);
}
Какой-то "c++ без классов"
> throw std::runtime_error
Я думал что noexcept значит что функция не бросает исключений, или это только checked exception, как в Яве?
Да, так и есть. На самом деле, в случае исключений тут будет тупо std::terminate(), вероятнее всего, без раскрутки стека. Кто-то мало того, что не читал про фичи, которые использует, но и не тестировал то, что написал.
мистер kashitsyn, вы были правы, синглетон мейерса - действительно топовая реализация синглетона в крестах
остальные - не очень
остальные сингтоны или остальные на этом сайте?
Прочитал как "отсталые сингтоны". Отличная характеристика.
А период полураспада где задаётся?
Не всегда помогает :) Внезапно pthread_atfork полезен, даже если не используешь треды, как возможность повесить коллбэк на любой форк.
Конкретно в нашём случае было примерно следущее: signal_set из asio создаёт self-pipe, который сидит в бустовом синглтоне. После форка потомки (молча) наследовали этот пайп и тоже использовали (собственный) signal_set, и сигналы уходили то к ним, то к паренту.
рексар?
Там таки есть указатель на контекст
По крайней мере, сам класс не уродуется бесполезным getInstance()'ом и приватными конструкторами, которые мешают тестированию и т.п. Ну и нет проблем с ленивой инициализацией, в которую непонятно как просунуть параметры.
А у синглтона смешивается ответственность и за полезную работу и за управление инстансами. Нахуй так жить?
вот это - "гулять так гулять". А у тебя какой-то грязный хак