【发布时间】:2020-05-01 11:18:39
【问题描述】:
我有一个可以显示图像或文本行的 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;
}
}
}
我似乎无法让底部的开关正常工作。我不确定切换是否是最好的方法。任何建议都将不胜感激,干杯。
【问题讨论】:
标签: c++ templates types switch-statement typechecking