小编J. *_*ead的帖子

如何在 C++ 中检查模板类中的类型?

我有一个 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) - …
Run Code Online (Sandbox Code Playgroud)

c++ templates types typechecking switch-statement

0
推荐指数
1
解决办法
6011
查看次数

根据索引合并clojure中地图的两个向量

我在 clojure 中有两个地图向量,我希望将它们合并,使其成为单个地图向量,但每个索引处的地图都被合并。我只是想知道做到这一点的最佳方法。

例如:

[{:sku "e1" :name "example1"} {:sku "e2" :name "example2"}]
[{:color "Blue" :price 9.99} {:color "Red" :price 15.99}]
Run Code Online (Sandbox Code Playgroud)

将合并为:

[{:sku "e1" :name "example1" :color "Blue" :price 9.99} {:sku "e2" :name "example2" :color "Red" :price 15.99}]
Run Code Online (Sandbox Code Playgroud)

maps merge vector clojure

0
推荐指数
1
解决办法
129
查看次数

具有不确定数量的键的映射向量的 Clojure 规范

我正在尝试为一个函数编写一个 clojure 规范,该函数采用以下两个映射作为参数。

{1 BL0-MD0-SU, 0 BL0-SM0-SU}
{0 [https://gateway.pinata.cloud/ipfs/QmcLjsUDHVuy8GPUPmj4ZdGa3FWTfGnsKhWZ4dxqUaGGXk/doge.jpg ], 1 [https://gateway.pinata.cloud/ipfs/QmcLjsUDHVuy8GPUPmj4ZdGa3FWTfGnsKhWZ4dxqUaGGXk/doge.jpg ]}
Run Code Online (Sandbox Code Playgroud)

每张地图的长度可以不同,具体取决于用户希望购买多少件 T 恤。我不确定如何为此编写规范,以允许每个映射中的键和值的数量发生变化。如果我可以断言每个映射都包含相同数量的键,那也会很有用。

编辑:

当以下内容通过时,规范也应该通过:

{1 BL0-MD0-SU, 0 BL0-SM0-SU, 2 BL0-LG0-SU}
{0 [https://gateway.pinata.cloud/ipfs/QmcLjsUDHVuy8GPUPmj4ZdGa3FWTfGnsKhWZ4dxqUaGGXk/doge.jpg ], 1 [https://gateway.pinata.cloud/ipfs/QmcLjsUDHVuy8GPUPmj4ZdGa3FWTfGnsKhWZ4dxqUaGGXk/doge.jpg ], 2 [ ]}
Run Code Online (Sandbox Code Playgroud)

testing specifications clojure leiningen clojure.spec

0
推荐指数
1
解决办法
161
查看次数