У меня есть класс Button, который может отображать изображение или строку текста, которые я пытаюсь использовать для реализации шаблона.
Если это текст, то тип шаблона: const char *
Если это изображение, то тип шаблона: const wchar_t *
Вот метод, который должен различать два типа:
template <typename T>
void Button<T>::draw(EasyGraphics* canvas)
{
canvas->setBackColour(colour);
if (mouseOver)
{
canvas->setPenColour(EasyGraphics::BLACK, 4);
}
else
{
canvas->setPenColour(EasyGraphics::BLACK, 2);
}
canvas->drawRectangle(Entity::GetX(), Entity::GetY(), Entity::getWidth(), Entity::getHeight(), true);
canvas->setFont(20, L"");
canvas->setTextColour(textColour);
switch (typeid(T))
{
// Button has display text
case typeid(const char*):
{
canvas->drawText(displayData, Entity::GetX() + textXOfset, Entity::GetY() + (Entity::getHeight() / 4) - 3);
break;
}
// Button has display image
case typeid(const wchar_t*):
{
canvas->drawBitmap(displayData, Entity::GetX() + textXOfset, Entity::GetY() + (Entity::getHeight() / 4) - 3, 60, 60, 0x0000FF00);
break;
}
}
}
Мне кажется, что чтобы выключатель внизу работал правильно. Я не уверен, является ли переключатель лучшим способом go. Любой совет будет оценен, ура.